visual-studio - 从 Entity Framework 数据库优先切换到代码优先

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

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

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

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

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

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

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

谢谢

克里斯

最佳答案

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

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

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

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

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

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

关于visual-studio - 从 Entity Framework 数据库优先切换到代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658549/

相关文章:

entity-framework - VSTS 构建如何为 EF Core 添加更新数据库命令 Code First

c# - 使用流畅的 API 编写第一类代码

visual-studio - clr.dll 的版本与构建 mscordacwks.dll 的版本不匹配

c++ - 在 Visual Studio 或 g++ 上运行 Matlab Coder 输出项目

c# - ASP.net MVC 2.0 使用相同的表单进行添加和编辑

c# - EF6、Windows 服务和数据库轮询

c - Visual Studio - C 编程

C++,如何找到成员函数的地址?

ef-code-first - EF Core 审核级联删除值

entity-framework - Entity Framework .Where 嵌套在 .Include 中