使用Entity FrameWork保存更改/更新数据集中的现有对象,而不必单独设置每个属性

Las*_*eak 7 asp.net-mvc linq-to-entities entity-framework entity-framework-4.1 asp.net-mvc-3

我是否可以执行类似下面的操作(不起作用),而无需显式设置对象的每个属性.Product是由表单提交中的默认模型绑定器创建的对象,而ProductInDb是我希望覆盖/更新的上下文/数据库中的对象.ProductID主键在两者上都相同.

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

                    ProductInDb = product;

                    context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

Era*_*nga 15

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

如果您使用的是DbContextAPI

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

context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

对于 ObjectContext

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

context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

  • @Eranga我尝试了同样的事情,但是当我编辑已经存在的实体时,数据库中出现了唯一性冲突错误。也许你的语法会对我有帮助。 (2认同)