我开发了一个在生产中运行的程序。
该程序使用EF5 Database First
进行数据库访问(只读)。
如果.edmx
方案与连接字符串中配置的数据库的数据库方案不同,我想显示错误。
查询示例:
db.FirstTable.Where(x => x.Age> 4)
如果Age
是某些reasond更改为PersonAge
(由于数据库版本不匹配),我想安全失败。
目前,我等到实际查询发生(可能是程序启动后的几个小时),然后我处理异常(No such column "Age"...
)。
我可以尝试调用db.TableX.first()
并在二进制文件的启动时查找异常,是否有更优雅的方法来验证针对数据库的方案?
答案 0 :(得分:1)
你可能会遇到挑战。虽然calling:
MyDbContext.Database.CompatibleWithModel(throwIfNoMetadata)
EF5中的看起来会为您提供信息,文档的EF V6 version包含此注释:
如果使用Model First或Database First方法创建上下文,则假定模型与数据库兼容,并且此方法返回true
我无法回想起任何指示此区域发生变化的EF6变更日志(这并不意味着没有变更),因此不清楚这是更好的文档还是真正的行为变化。
使用EF source进行一些调试可能是必要的:但是在V5发布后,EF只是开源的。
编辑:补充。查看第一个版本的System.Data.Entity.Database
,其XML文档评论包含上述引用。