是否可以让实体框架在其DbContext
中动态添加/删除表/列而无需重新编译项目?用例是GUI应用程序中的EF,并且可以在生命周期内在幕后更改数据库模式 - 我们不希望在每次数据库更改时重新编译GUI应用程序 - 它应该直观地显示新的表类(即Schema)以及一些控件,如类型,属性名称等。
答案 0 :(得分:1)
如果您的GUI应用程序与您的数据库配合使用而没有一些分离的“api” - 真正的web api,wcf服务等,从技术上讲是不可能的。即使您禁用项目的自动迁移并将设法使您的应用程序思考,该数据库是最新的(可能会发生一些神奇的,动态的DLL编译等),你很有可能得到一些时髦的东西 - 改变了FK,PK,限制,约束,数据类型等。这将是导致实体框架出现意外行为,并带来悲伤。
只有在这种情况下你可以在不影响真正的GUI应用程序的情况下完成它 - 你只需重新滚动外部项目并且瞧 - 如果你正确设置了你的DTO和方法,它就可以了。否则,如果您的API无法控制地更改,您将遇到DTO不匹配问题,您将不得不处理版本控制等等。
在任何情况下,无需重新编译即可更改支持应用程序的模型,这是一个坏主意,因为C#不是动态语言。
答案 1 :(得分:0)
实体框架不会这样做。这将是定制解决方案,非常昂贵。