使用实体框架保存更改/更新数据集中的现有对象,而不必分别设置每个属性

问题描述 投票:8回答:1

我可以在不显式设置对象的每个属性的情况下执行以下操作(不起作用)。产品是由默认模型联编程序通过表单提交创建的对象,而ProductInDb是上下文/数据库中我希望覆盖/更新的对象。两者的ProductID主键相同。

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID);

ProductInDb = product;

context.SaveChanges();
asp.net-mvc asp.net-mvc-3 entity-framework linq-to-entities entity-framework-4.1
1个回答
16
投票

您可以附加现有的product并将其状态设置为Modified

如果使用的是DbContext API

context.Products.Attach(product);
context.Entry(product).State = EntityState.Modified;

context.SaveChanges();

对于ObjectContext

context.Products.Attach(product);
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);

context.SaveChanges();
© www.soinside.com 2019 - 2024. All rights reserved.