如何识别EF5中的数据库架构更改

时间:2014-04-08 08:46:48

标签: sql-server entity-framework-5

我开发了一个在生产中运行的程序。 该程序使用EF5 Database First进行数据库访问(只读)。

如果.edmx方案与连接字符串中配置的数据库的数据库方案不同,我想显示错误。

查询示例:

db.FirstTable.Where(x => x.Age> 4) 如果Age是某些reasond更改为PersonAge(由于数据库版本不匹配),我想安全失败。

目前,我等到实际查询发生(可能是程序启动后的几个小时),然后我处理异常(No such column "Age"...)。

我可以尝试调用db.TableX.first()并在二进制文件的启动时查找异常,是否有更优雅的方法来验证针对数据库的方案?

1 个答案:

答案 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文档评论包含上述引用。