更新实体框架对象

entity entity-framework

我使用数据传输对象在实体框架和业务层和用户层之间传输数据。我有一些疑问,如果我检索一个转换为DTO的对象,我如何在实体框架中更新正确的对象而不只是插入一个副本?

热门答案

以下代码将从强类型视图更新已在MVC中创建为控制器参数的EF 4实体:

似乎诀窍是在将实体添加到上下文后使用ObjectStateManager将状态从Added更改为Modified。

MyEntities db = new MyEntities();
db.Product.AddObject(product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
return db.SaveChanges() > 0;

根据@Sean Mills评论,如果您使用的是EF5:

 ((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Added);



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因