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

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

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

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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值