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

时间:2013-12-18 12:42:00

标签: visual-studio entity-framework ef-code-first t4 ef-database-first

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

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

似乎使用Code First,我们只需更改模型并生成脚本以更改各种数据库。这似乎更直接,不涉及手工制作脚本流程和降低风险。

所以,如果我们进行切换,那只是一个例子:

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

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

谢谢,

克里斯

1 个答案:

答案 0 :(得分:0)

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

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

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

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

所有这一切,你的陈述中都是正确的。虽然我会从现有数据库中的EF Reverse Poco生成的类开始,为您提供更多的灵活性。使用反射代替XML解析将T4指向这些类(查看T4工具箱以获取输出文件管理),以便开始使用。

当你开始时,反思装配是一个棘手的问题。您需要确保已编译EF / Poco程序集,以便可以将其加载到内存中并由T4反映出来。在极少数情况下,根据您加载程序集的方式,它可以停止刷新程序集,因此您必须重新启动VS.我每个月碰两次这样的事情,所以对我来说这不是一个交易障碍。一旦我开始运行它就有意义了。