从实体框架数据库优先切换到代码优先

Chr*_*ris 5 t4 entity-framework visual-studio ef-code-first ef-database-first

我们的解决方案目前基于 Entity Framework Database First。我们有一个从 EDMX 生成存储库类的 T4 模板。

我们正在审查发布更改的计划方法,尤其是数据库更改。如果我们先继续Database,那么我们需要单独生成脚本来改变开发和其他数据库。

似乎使用 Code First,我们只需更改模型并生成脚本来更改各种数据库。这看起来更直接,不涉及手工编写脚本过程和更低的风险。

因此,如果我们进行切换,是否只是以下情况:

  • 将先前生成的模型从我们的实体项目中的 EDMX 移动到(它们目前都在一个类文件中)到实体项目中文件夹中的(最好是单独的)类文件
  • 调整 T4 模板以从新位置拾取模型
  • 不再使用 EDMX 和从数据库更新
  • 当我们想对模型进行更改时,只需更改(以前但不再生成的)类
  • 使用 Code First 迁移实现对测试和其他数据库的更改

最后,我们将如何看待模型之间的关系?有没有办法创建图表?

谢谢,

克里斯

AC4*_*AC4 0

这是我过去做过的事情。随着时间的推移,我尝试了很多不同的方法。目前,我正在使用EF Reverse Poco Generator来允许对数据库进行更改并反映在代码中,并最初生成模型/Poco 类。我还可以手动更改现有的类。然后我为每个更改生成迁移。

代码优先模型允许像现在一样定义导航属性,因此您可以通过代码和可视化类关系的工具来查看关系。

如果您想查看数据库结构,您可以使用 MS Sql 中的“数据库图”功能(如果您正在使用该功能)。我的印象是,我们鼓励您使用实体框架本身以外的工具来可视化数据库或类关系。这使得 EF 团队能够专注于数据库代码,而不是与 VS 进行复杂的 UI 集成。

我个人依赖数据库图来检查我的类结构和它们输出的数据库,但我发现只查看 Poco 类是很自然的。我还没有找到任何特殊的类图绘制工具。

话虽这么说,你的陈述是正确的。尽管我会从现有数据库的 EF Reverse Poco 生成的类开始,为您提供额外的灵活性。使用反射而不是 XML 解析将您的 T4 指向这些类(查看 T4 Toolbox 的输出文件管理)以帮助您入门。

当您开始时,反思程序集是一个棘手的问题。您需要确保已编译 EF/Poco 程序集,以便可以将其加载到内存中并由 T4 反映。在极少数情况下,根据您加载程序集的方式,它可能会停止刷新程序集,因此您必须重新启动 VS。我每个月都会遇到几次这种情况,所以这对我来说并不是什么大问题。一旦我启动并运行它就有意义了。