1

将基于 Entity Framework 5.0 的项目从代码优先迁移到数据库优先时。我们将使用标准的 VS2012 向导从数据库中生成 edmx 模型,但除此之外我们还有其他步骤吗?我想我必须删除我定义了代码优先模型甚至迁移文件夹的所有类 - 除了这两个之外还有其他清理操作吗?

[编辑]: 报告回来。

所以实际体验在我最初的期望和 Ladislav 提到的之间(就像他说的,确切的条件取决于代码)。对我来说,整个手术大约需要 15-20 分钟,主要涉及

  • 分支创建(安全,以防万一发生爆炸!)
  • 删除代码优先类和源代码(我将它们移到 VS2012 之外以获得差异参考)
  • 从数据库创建 EDMX 模型(将相同的命名空间等传递给向导以减少差异程度)
  • 快速检查代码优先类和自动生成的数据库优先类。这主要是 1:1,因为我们一开始就在代码优先模型中使用了合理的名称。
  • 一个一个地编译和修复每个错误
  • 注意到许多错误是由于 EF 5 的自动复数与我自己对不同字段的复数造成的。通过快速区分大小写的搜索修复了 40 多个错误 -> 全部替换
  • 编译后重新运行所有测试
  • 重新合并功能分支!

谢谢

4

1 回答 1

2

如果您的实体或上下文类包含任何其他逻辑,这可能会非常复杂。你必须:

  • 将 EDMX 模型添加到您的项目中并让它生成实体类和上下文类
  • 移除迁移
  • 如果您的原始上下文类包含任何附加代码,则必须将其转换为与新生成的上下文类具有相同名称、命名空间和程序集的部分类,并且仅使用该附加代码。
  • 如果您的任何实体类包含任何附加代码,您必须遵循与上下文相同的过程。
  • 如果附加代码实际上是从现在自动生成的代码内部调用的,则您必须进行一些其他更改,其中可能包括更改代码生成模板和使用部分方法。
  • 您必须从引导程序中删除任何数据库初始化或迁移执行
  • 您必须使用引用元数据文件的新连接字符串

另一个更复杂的选项是不使用自动生成功能并使用旧的上下文和实体类,但在这种情况下,您必须手动使它们与您的 EDMX 保持同步。

于 2012-10-10T09:33:29.853 回答