我正在玩EF并设置了一个从数据库生成的模型。该模型仅限代码,没有设计师。EF从数据库更改中重新生成代码模型
我给我的一个数据库表添加了一个字段。
有没有简单的方法可以“重新生成”模型代码?我想如果我使用过设计器,这会更容易,我可以找到相反的方式迁移信息(添加一个模型属性并获得一个迁移来更新数据库),但没有关于我如何传播从数据库到模型的变化。
我认为我可以做手工,但这似乎不是理想......
我正在玩EF并设置了一个从数据库生成的模型。该模型仅限代码,没有设计师。EF从数据库更改中重新生成代码模型
我给我的一个数据库表添加了一个字段。
有没有简单的方法可以“重新生成”模型代码?我想如果我使用过设计器,这会更容易,我可以找到相反的方式迁移信息(添加一个模型属性并获得一个迁移来更新数据库),但没有关于我如何传播从数据库到模型的变化。
我认为我可以做手工,但这似乎不是理想......
一种选择是只删除自动生成的从项目类,并再次产生他们。虽然遵循这种方法,但我们只需要确保这一点,我们应该为数据模型(从DbContext继承的类名)提供与前一个相同的名称。
我曾考虑过这一点,但不确定是否有更好的方法。我特别担心的是,我可能稍后必须做出任何调整,我必须重新调整这样做(我还没有调整任何东西,只是想提前考虑) – jleach
你仍然可以调整,如果你只是确保您随时随地传播更改。例如如果您在模型代码中进行了更改,请确保在开始修改数据库之前使用迁移/初始化程序将它们推送到数据库。这样你就不会失去同步,如果你稍后在数据库中进行大规模的修改,你可以删除你的模型代码并重新进行修改。此外,如果您想为模型添加功能,请利用它们作为部分类。 – Tone
@声音我更担心调整不会推回到数据库阻抗不匹配胶水,因为它是。我对EF/ORM非常陌生,但曾想过我可能会遇到具有导航属性的案例,这可能会成为一个问题。但是,我的实体和领域模型是分开的,因此可能足够安全,以便将不匹配胶粘剂放在DTO适配器中,或者也许这是所有不必要的担心。尽管如此,我还是会努力的,现在比一个小时前我感觉好多了。 – jleach
我记得在前一阵子做了这样的事情 - 它首先被称为反向工程代码。基本上它会查看当前数据库并根据该数据库为您创建POCO类。我已经做到了既创建一个新的项目时,作为本教程提示: https://msdn.microsoft.com/en-us/library/jj200620.aspx
,我已经使用这个工具的旧版本也做到了: https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d
到最后,你会发现Jaydeep的删除和重新开始的方法是最简单的。
谢谢,msdn的这个评论有助于将它放在上下文中:_ Code First to Database向导旨在生成一组起始点集合,然后您可以对其进行调整和修改。如果您的数据库模式发生变化,您可以手动编辑这些类,或者执行另一个逆向工程来覆盖这些类。我将把这个工具放在我的脑后,但现在可能只是用Jaydeep。 – jleach
https://msdn.microsoft.com/en-us/data/jj591621.aspx –
http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx –
@VolodymyrBilyachat - 我只是在阅读之前阅读这篇文章......似乎正在做与我正在寻找的相反(正如问题所述)? – jleach