【发布时间】:2010-09-27 07:11:18
【问题描述】:
这可能是一个简单的解决方案,但是....
如果我有一个实体框架 4 存储库,它公开以下接口:
void InsertOrUpdate(Foo foo);
我的 EDM 是使用自定义 POCO 完成的(不生成代码),我如何对 POCO 执行 UPDATE?
我可以通过这样做插入一个新对象:
var newFoo = new Foo { ... };
repo.InsertOrUpdate(newFoo);
如果我使用 ObjectContext.AddObject 来实现该方法,这将有效。
但如果我尝试 UPDATE 一个对象:
var existingFoo = repo.Find(foo);
existingFoo.Name = "Changed the foo!";
repo.InsertOrUpdate(existingFoo);
我收到一条错误消息,提示已存在具有相同键的实体,这是有道理的 - 但我虽然 ObjectContext.AddObject 方法足够聪明,可以执行 INSERT 或 UPDATE?
我们如何处理 EF4 POCO Repos 中的插入和更新?我是否必须先查询数据库以查看它是否存在,如果不存在则执行 AddObject,如果存在 - 我该怎么办?
【问题讨论】:
标签: .net entity-framework-4 poco crud repository