从Entity Framework数据库优先模式切换到代码优先模式

7
我们的解决方案目前基于Entity Framework Database First。我们有一个T4模板,可以从EDMX生成存储库类。
我们正在审查发布更改的计划方法,特别是数据库更改。如果我们继续使用Database First,则需要单独生成脚本以更改开发和其他数据库。
似乎通过Code First,我们仅需更改模型即可生成更改各个数据库的脚本。这似乎更直接,不涉及手工制作脚本流程并降低风险。
因此,如果我们进行转换,是否只需执行以下操作:
- 将之前从EDMX在 Entities 项目中生成的模型(它们当前都在一个类文件中)移动到 Entities 项目中文件夹内的(最好分开的)类文件中。 - 调整 T4 模板以从其新位置获取模型。 - 不再使用 EDMX 和 "Update from Database"。 - 当我们想要更改模型时,只需更改(之前但不再生成的)类。 - 使用 Code First Migrations 实现对测试和其他数据库的更改。
最后,我们如何查看模型之间的关系?是否有一种创建图表的方法?
谢谢,
Chris

如果您已经在生产环境中,我建议您继续使用 Db,并使用 Redgate SQL Compare 等工具在不同环境之间移动数据库更改。 - Maess
谢谢,虽然还没有投入生产。 - Chris
请查看此文章 - kevin_fitz
听起来大致正确,不过你的前两步可能会涉及更多。请参考此资源以获取更多详细信息:http://devgush.com/2014/02/24/migrating-a-project-from-database-first-to-code-first/ - CrazyPyro
如果您想要一个类的图表,只需创建一个类图并添加所有所需的类。如果您想要一个数据库表的图表,只需在SQL Server中创建表格图表即可。 - Fabio Luz
1个回答

0

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

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

如果您想查看数据库结构,可以使用MS Sql中的“数据库图表”功能(如果您使用它的话)。我的印象是,鼓励您使用entity framework之外的工具来可视化数据库或类关系。这使得EF团队可以专注于数据库代码,而不是将复杂的UI集成到VS中。

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

说了这么多,你的陈述是正确的。虽然我建议从现有数据库中生成的EF Reverse Poco类开始,以给你增加灵活性。使用反射将T4指向这些类,而不是使用XML解析(查看T4 Toolbox以获取输出文件管理)。

当你开始反射程序集时,会遇到一些棘手的问题。你需要确保已编译EF/Poco程序集,以便可以在内存中加载并被T4反射。在某些情况下,根据你如何加载程序集,它可能会停止刷新程序集,因此你必须重新启动VS。我每个月都会遇到几次这种情况,所以对我来说并不是致命的问题。一旦我让它运行起来,就很容易理解了。


刚刚看到您在评论中留下的博客链接。我尝试了VS生成器,但更喜欢EF Reverse Poco Generator,因为它更灵活、功能更强大,而且可以反复使用。 - AC4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接