与不同的子对象添加到拥有的集合时与GraphDiff并发

时间:2016-11-14 14:06:26

标签: c# entity-framework graphdiff

为了使事情变得不复杂,我不会为这个问题采用我自己的实体模型,而是来自最初的GraphDiff-Blog-Post here,其中有一个公司实体有多个联系人。为了说明我的问题,我认为这已经足够了。

所以基本上我的代码与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();
}

问题在于尝试在程序的两个不同实例上向同一公司添加新联系人。例如,实例1保存新的联系人A,然后实例2保存新的联系人B.实例1中的图表在数据库中更新得很好,但实例2中的图表覆盖了实例1所做的所有更改并删除了新创建的联系人A.

有没有办法用Graphdiff解决这个问题?也许我需要做两个独立的更新(一个用于公司,一个用于联系),但是首先使用GraphDiff将不再有意义。还考虑在更新图形之前制作差异,但这似乎也非常过分。

或者我可能只是对实体框架没有经验,只能看到简单的解决方案:)

感谢任何帮助!

干杯, 迈克尔

0 个答案:

没有答案