为了让事情不太复杂,我不会为这个问题使用我自己的实体模型,而是使用原始 GraphDiff-Blog-Post中的模型,其中有一个公司实体有多个联系人。为了说明我的问题,我认为这已经足够了。
所以基本上我的代码与graphdiff示例中的代码相同,效果很好:
using (var context = new TestDbContext())
{
// Update the company and state that the company 'owns' the collection Contacts.
context.UpdateGraph(company, map => map
.OwnedCollection(p => p.Contacts)
);
context.SaveChanges();
}
问题是当试图在程序的 2 个不同实例上向同一公司添加新联系人时。例如,实例 1 保存了一个新的联系人 A,然后实例 2 保存了一个新的联系人 B。实例 1 中的图表在数据库中更新得很好,但实例 2 中的图表覆盖了实例 1 所做的所有更改并删除了新创建的联系人 A。
有没有办法用 Graphdiff 解决这个问题?也许我需要进行 2 个独立更新(一个用于公司,一个用于联系人),但首先使用 GraphDiff 已经没有多大意义了。还考虑过在更新图表之前做一个差异,但这似乎也有点矫枉过正。
或者,也许我只是对实体框架没有经验,以查看简单的解决方案:)
任何帮助表示赞赏!
干杯,迈克尔