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

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

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

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

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

  • 将以前生成的模型从实体项目中的EDMX移动到(它们全部都在一个类文件中)以便(最好是分开)实体项目内的文件夹中的类文件
  • 调整T4模板以从他们的新位置拾取模型
  • 不再使用EDMX和从数据库更新
  • 当我们想改变模型时,只需更改(以前但不再生成的)类
  • 使用Code First Migrations实现对Test和其他数据库的更改
  • 最后我们如何看待模型之间的关系? 有没有创建图表的方法?

    谢谢,

    克里斯


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

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

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

    我个人依靠数据库图来检查我的类结构和他们输出的数据库,但我觉得看看波科类是很自然的。 我还没有找到任何特殊的班级绘图工具。

    所有这些都说了,你在你的陈述中是正确的。 虽然我会从EF Reverse Poco从现有数据库生成的类开始,为您提供更大的灵活性。 将T4指向那些使用反射而不是XML解析的类(请看T4 Toolbox进行输出文件管理)以帮助您入门。

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

    链接地址: http://www.djcxy.com/p/90217.html

    上一篇: Switch from Entity Framework Database First to Code First

    下一篇: ASP.NET Identity with EF Database First MVC5