首先从EF 5.0代码迁移到数据库:要清理哪些文件?

时间:2012-10-10 07:21:36

标签: ef-code-first entity-framework-5 ef-database-first

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

[编辑]: 报告回来。

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

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

由于

1 个答案:

答案 0 :(得分:2)

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

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

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