這可能是一個簡單的解決方案,但是....實體框架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,如果是 - 我該怎麼辦?