这可能是一个简单的解决方案,但是....实体框架4 POCO CRUD存储库 - 如何执行智能插入/更新?
如果我有一个实体框架4 Repository中的公开以下接口:
void InsertOrUpdate(Foo foo);
我的EDM与定制POCO的完成(无码代),我如何执行POCO的更新?
我可以INSERT一个新对象通过这样做:
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或更新?
我们如何处理EF4 POCO Repos中的插入和更新?我是否必须首先对数据库进行查询以查看它是否存在,如果不是,那么执行AddObject,如果是 - 我该怎么办?