我正在尝试在一个名为addorupdate的EF4 POCO存储库上创建一个方法。
其思想是业务层可以传入一个POCO对象,如果对象是新的(还没有在数据库中),持久性框架将添加该对象,否则将使用新值更新数据库(调用savechanges()。这和我问过的其他一些关于英孚的问题类似,但我只有80%的人理解这一点,所以请原谅部分重复。
我缺少的部分是,一旦确定业务对象确实存在于数据库中(现在由于TryGetObjectByKey已加载),如何在我的ObjectContext/关联的对象集中更新传入业务对象的对象图。ApplyCurrentValues听起来有点像我想要的,但它只复制标量值,似乎不打算更新ObjectContext/ObjectSet中的对象图。因为我的特殊用例,我现在不关心并发性。
public void AddOrUpdate(BO biz)
{
object obj;
EntityKey ek = Ctx.CreateEntityKey(mySetName, biz);
bool found = Ctx.TryGetObjectByKey(ek, out obj);
if (found)
{
// How do I do what this method name implies? Biz is a parent with children.
mySet.TellTheSetToUpdateThisObject(biz);
}
else
{
mySet.AddObject(biz);
}
Ctx.DetectChanges();
}