2

我正在从 Entity Framework 4 (Visual Studio 2010) 迁移到 Entity Framework 6 (Visual Studio 2013) 并且在关系行为方面存在一些问题。

我目前正在使用 Visual Studio 中的默认模型设计器工具,它为我生成所有实体类。

假设我有两个实体,EntityA 和 EntityB。我在 EntityA 和 EntityB 之间有关系,因此 EntityA 有许多 EntityB(而 EntityB 有一个 EntityA)。

在 EF4 中,我可以编写如下代码:

var entityA = new EntityA();
var entityB = new EntityB();

entityB.EntityA = entityA;

Console.Out.WriteLine(entityA.EntityBs.Count);

这将打印 1。但在 EF6 中,打印 0。

这也会在 EF4 中打印 True,但在 EF6 中打印 False:

var entityA = new EntityA();
var entityB = new EntityB();

entityA.EntityBs.Add(entityB);

Console.Out.WriteLine(entityB.EntityA != null);

我不太喜欢这种行为,那么有没有办法让它自动同步关系更改,而不必像在 EF4 中那样手动添加两端的关系?即使我将对象添加到数据库上下文中,关系更新似乎也不会同步。

为 EF4 生成的类看起来比为 EF6 生成的类复杂得多,所以我可以理解这样的东西不起作用......

编辑:

经过一番调查,这似乎是 EF4.1 中引入的新 DbContext 的问题,与 EF6 无关。我在 EF4 中使用的旧 ObjectContext 没有这个问题。即使不推荐,仍然可以通过选择“EF 6.x EntityObject Generator”而不是“EF 6.x DbContext Generator”作为代码生成模板来使用较旧的 ObjectContext 模板。要显示此内容,必须首先将其作为在线模板下载。

我仍然在寻找比使用旧的 ObjectContext 模板更好的方法,这样我就可以使用更新的 DbContext。

4

0 回答 0