DB更改时动态重新生成模型?

时间:2016-03-11 17:29:33

标签: c# entity-framework entity-framework-6

是否可以让实体框架在其DbContext中动态添加/删除表/列而无需重新编译项目?用例是GUI应用程序中的EF,并且可以在生命周期内在幕后更改数据库模式 - 我们不希望在每次数据库更改时重新编译GUI应用程序 - 它应该直观地显示新的表类(即Schema)以及一些控件,如类型,属性名称等。

2 个答案:

答案 0 :(得分:1)

如果您的GUI应用程序与您的数据库配合使用而没有一些分离的“api” - 真正的web api,wcf服务等,从技术上讲是不可能的。即使您禁用项目的自动迁移并将设法使您的应用程序思考,该数据库是最新的(可能会发生一些神奇的,动态的DLL编译等),你很有可能得到一些时髦的东西 - 改变了FK,PK,限制,约束,数据类型等。这将是导致实体框架出现意外行为,并带来悲伤。

只有在这种情况下你可以在不影响真正的GUI应用程序的情况下完成它 - 你只需重新滚动外部项目并且瞧 - 如果你正确设置了你的DTO和方法,它就可以了。否则,如果您的API无法控制地更改,您将遇到DTO不匹配问题,您将不得不处理版本控制等等。

在任何情况下,无需重新编译即可更改支持应用程序的模型,这是一个坏主意,因为C#不是动态语言。

答案 1 :(得分:0)

实体框架不会这样做。这将是定制解决方案,非常昂贵。