【发布时间】:2018-07-26 13:35:26
【问题描述】:
我们正在将 Web 应用程序从 EF 4.0 迁移到 EF 6。实体早期基于 ObjectContext,但现在我们正在研究 DBContext。代码严重依赖延迟加载。使用以下语法添加实体:
var user = new EntityModel.User();
user.DepratmentId=25;
context.Users.Add(user);
context.SaveChanges();
var name = user.Department.Name;
原始代码很容易将部门名称分配给变量名称。使用 DBContext 将实体框架升级到 EF6 后,user.Department 为空。我知道当我们使用 DBContext 时,延迟加载仅适用于代理。如果将代码更改为以下内容,它将正常工作:
var user = context.Users.Create();
user.DepratmentId=25;
context.Users.Add(user);
context.SaveChanges();
var name = user.Department.Name;
我手头的问题是我们无法在整个代码库中进行此更改。鉴于大量的代码,这实际上是不可能的。有人对此有解决方案吗?
【问题讨论】:
-
我不明白你为什么不能做出改变。如果您没有活动的 ObjectContext,那么延迟加载将不会在 EF 4 中工作。因此,如果您在创建实体时在范围内有 DbContext,则应该能够搜索和替换以进行此更改。也许如果您包含一个较长的示例,说明您尝试迁移的 EF 4 代码。
-
我无法进行更改,因为有 8000 个地方必须进行更改。我无法做出如此巨大的改变并对其进行测试。
-
所以您的计划是将这 8000 个位置从 EF4 ObjectContext 更改为 EF6 DbContext 并且不测试?
-
不,一点也不。我不必进行这些更改,因为 Code 引用的是上下文对象而不是类。
标签: entity-framework proxy objectcontext