实体框架数据库提交

本文关键字:提交 数据库 框架 实体 | 更新日期: 2023-09-27 18:14:01

使用以下代码:

using (GagaShaggyContext db = new GagaShaggyContext())
{
    ItemModel itemToChange = null;
    itemToChange = (from i in db.Items
                    where i.ItemID == checkoutItem.Item.ItemID
                    select i).FirstOrDefault();
    itemToChange.FrontFeature = false;
    db.SaveChanges();
}

模型用一个全新的ID保存回数据库,我想保存对原始数据库条目的更改。发生这种情况有什么原因吗?

感谢

编辑

在断点分析中,在添加收据项之前添加一个不同的ItemID,我不知道为什么:

using (var db = new GagaShaggyContext())
{
                    db.Receipts.Add(rec);
                    db.SaveChanges();
}

实体框架数据库提交

using (var db = new GagaShaggyContext())
     {
        var ItemToUse = (from i in db.ItemModels
                         where i.ItemModelID == checkoutItem.Item.ItemModelID
                         select i).FirstOrDefault();
        rec.ItemModel = ItemToUse;
        db.Receipts.Add(rec);
        db.SaveChanges();
      }

这个修复了它。我们需要实际检索相关的Item并将其放入收据(recc)中,然后我们可以添加它,现在实体框架识别了这两者之间的关系。

我猜你是在尝试插入数据库

    using (GagaShaggyContext db = new GagaShaggyContext())
    {
        ItemModel itemToChange = new ItemModel();
        itemToChange = (from i in db.Items
                        where i.ItemID == checkoutItem.Item.ItemID
                        select i).FirstOrDefault();
        if(itemToChange !=null)
        {
            itemToChange.FrontFeature = false;
            db .Items.Add(itemToChange);
            db.SaveChanges();
        }
   }

如果您正在尝试更新记录,则

using (GagaShaggyContext db = new GagaShaggyContext())
    {
        ItemModel itemToChange = new ItemModel();
        itemToChange = (from i in db.Items
                        where i.ItemID == checkoutItem.Item.ItemID
                        select i).FirstOrDefault();
        if(itemToChange !=null)
        {
            itemToChange.FrontFeature = false;    
            objDBContext.Entry(itemToChange).State = EntityState.Modified;
            objDBContext.SaveChanges();
        }
    }