如何删除此Entity Framework Update中的数据提取?

时间:2013-02-13 00:05:21

标签: entity-framework

我可以重构此查询,这样我就不必从数据库中获取了吗?我尝试了各种技术,但都没有。

    public void Update(CartEntryViewModel entry)
        using (var context = new MyContext())
        {
            User user = Auth.GetUser(context);
            CartEntry model = context.CartEntries.Find(entry.Id);

            // Change the item and update quantity
            model.Item = context.Items.Find(entry.Item.Id);
            model.Quantity = entry.Quantity;
            context.Entries(model).EntityState = EntityState.Modified;

            context.SaveChanges();
        }
    }

1 个答案:

答案 0 :(得分:0)

Attach()方法获取您已有的模型,并将其附加到上下文,就好像它只是从数据库中读取一样。您只需更改状态,以便上下文知道在调用SaveChanges()时更新数据库中的相应行。

public void Update(CartEntryViewModel entry)
{
    CartEntry model = new CartEntry
    {
        model.Id = entry.Id,
        model.Item = entry.Item,
        model.Quantity = entry.Quantity,
        // Set other properties.     
    };

    using (MyContext context = new MyContext())   
    {
        context.CartEntries.Attach(model);
        context.Entry(model).State = EntityState.Modified;
        context.SaveChanges();
    }
}