从EF5升级到EF6时需要注意的事项

时间:2014-05-12 09:53:48

标签: entity-framework

最近我从EF5升级到EF6,这里是一个需要照顾的项目清单

  1. EF MiniProfiling :如果您使用EF5进行小型配置文件,您将会破坏代码,因为很少有功能或变量名称被更改。
    解决方案:升级到更新版本的EF MiniProfiling

  2. Db-Reindexing :更新到EF6后,它会向您抱怨您的模型发生变化,当您执行“添加迁移”时,您将看到所有主键索引都被重新创建还有它改变了一对一关系的表的名称,所以如果它生成表名为TableATableB,那么它将重命名表,因为TableBTableA不知道为什么。
    决议1 :让EF为创建索引创建迁移,只注释掉行 上下功能。
    解决方案2 :从down函数复制代码行(即drop index)并尝试在创建索引之前执行它,简单规则先删除然后创建,你需要这个其他EF会抱怨索引已经本。

  3. 迁移:如果您正在使用某种工具来部署程序集,而这又使用通常在以下位置找到的migrate.exe,那么这只会影响您 ...#your project location \ packages \ EntityFramework.6.1.0 \ tools \ migrate.exe 将它复制到你的bin文件夹,事情应该可以正常工作。

  4. 4. 空处理:在EF6中对空值的处理已经改变,我的实践经验表明,使用ef5选择查询忽略了空的情况,但不是ef6的情况
    例如如果我有查询像

     db.context.entity.where(name != "ab");
    
     and lets say entity table contains two names {"ab",null}
    
     with EF5 it will return 1 row with ef6 it was returning 2 rows  
    
     http://entityframework.codeplex.com/workitem/2115
    

    分辨率:如果你想像EF5一样工作,你可以设置     dbContext.Configuration.UseDatabaseNullSemantics = true;

    如果有帮助,请不要忘记将此帖子标记为已回答:)

0 个答案:

没有答案