现在的位置: 首页 > 综合 > 正文

解决Entity Framework(EF) 使用时,数据库结构对应,但EF还是提示要删除数据库的问题

2013年10月29日 ⁄ 综合 ⁄ 共 545字 ⁄ 字号 评论关闭

.Net平台使用Entity Framework的Code First模式做开发非常方便,开发人员不用再操心数据库的琐碎细节了。

但在使用过程中遇到一个困惑,当数据结构发生变更时,EF的机制下会自动删除并重新生成空的数据库,这种做法在我们的项目的测试数据比较多的时候,频繁需要对数据库进行初始化是一件很累很烦的事情,所以我们想了个变通的方法:

当程序的相关类的结构发生变动时,把连接字符串的数据库名改成一个新名字,在Debug下运行程序,跑出一个空的数据库,然后使用数据库对比工具Datanamic SchemaDiff将最新库的结构同步到原来的数据库,这样原来数据库的测试数据就能保留下来,避免重复初始化.

但有时候却发生一个很恼火的情况,就是数据库的结构已经被同步到最新,理论上已经不需要重新生成数据库了,但EF却仍然报"你的数据库从创建后已经发生了更改,需要删除数据库***,但数据库正在使用无法删除".

我用数据库对比工具反复对比了两个数据库,结构是完全一致的,就推断EF肯定在程序那边或者数据库这边安放了标识,来标识数据库的变动.在网上找了些资料,果然如此,数据库里EF添加了一张附加的表EdmMetadata,里面只有一条哈希值记录,于是把新库的那条记录的哈希值替换掉旧库的值,一运行,Ok~

抱歉!评论已关闭.