10

我们最近将 Visual Studio 从 2010 升级到 2013。随之而来的是 EF 6.0,它与从 EF 4 生成的代码不兼容。

我需要使用数据库模式中的最新版本更新模型中的表。这样做时,删除表定义后的“更新”和“添加”都执行以下操作:

  • 删除已为模型中所有类型编写的所有自定义代码,即使它们位于与模型不同的文件中;
  • 生成新的 EF 6.0 绑定;
  • (可选)生成新的存储库。现在,这显然与 EF 4 中的行为不同,后者仅重新生成了存储库,并没有触及自定义代码。

我们没有使用 NuGet,而是在项目中引用 EF 库。

我猜 VS 2013 使用的代码生成器版本与 VS 2010 不同。我们如何才能恢复到旧的行为?

更新: 我尝试使用 NuGet 下载 EF 4.3.1 并重复更新模型步骤(也删除然后重新创建),但我仍然看到旧行为。我认为 VS 2013 EF 代码生成器存在问题。

4

1 回答 1

16

对我来说,以下解决方案有效。

双击您的 edmx 文件并打开其属性窗口。Code Generation Strategy从更改T4Legacy Object Context。构建您的解决方案。它可能会导致数千个错误,因为您重新声明了函数和属性,因此请删除以前不存在的所有文件。

edmx 属性窗口

于 2013-12-09T16:39:39.007 回答