您的位置:首页 > 其它

EF Code First的局限性

2012-09-08 10:50 204 查看
以下一段是引用网上别人的经验
“EF Code First在创建数据库的时候针对实体类作了Hash,并将Hash存储在数据库中的EdmMetadat表的ModelHash字段。当系统运行时,EF Code First会将运行的实体与数据库中的ModelHash进行比较,如果不同就会认为系统出现了变化,抛出异常。当然EF提供了一些数据库初始化的功能,但是当检测到变化后,初始化策略只能将原有的数据库删除重新根据实体关系建立数据库。如果数据库中已经有一部分数据,这些数据将会丢失。

目前我找到的一个解决方案是手工处理ModelHash的更新。如果实体发生变化,手工生成数据库变更的脚本,然后再测试机上运行系统,并从新生成的测试数据库中获取ModelHash的值,将这个值更新到生产库上就可以了。当然你也可以写的自动化一些,将测试库里面的ModelHash自动更新到生产库上。”

自已做了几个测试,其结果:

1、如果改变类结构,不改变数据结构,会引起错误

2、如果不改变类结构,但改变数据结构,也会引起错误

3、如果不改变类结构,数据中不改变涉及类结构中的字段,不会引起错误

感觉还不是特别理想,对已有的数据迁移时,是个大问题,灵活性受到很大的限制

1、对已有数据迁移时,限制较多;

2、仅对数据库表结构的支持,无法利用数据库强大的查询分析功能;

3、在大型对象型数据库没出现普及之前,这种利用纯对象模式的操作,与关系型数据库之间转换还是相当的麻烦;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: