Entity Framework 6的重大变革

Entity Framework首次发布的时候是作为.NET Framework核心库的一部分。但微软随即意识到EF并不是一个完整的产品,需要用一些“带外的(out-of-band)”发布来进行增强。这使其被划分为两大类别:System.Data.Entity.dll中的核心类和EntityFramework.dll中的带外类。

从那以后,微软决定将Entity Framework整个迁移到开源模型。这需要进一步改造,而且其核心文件也不可能简单地从.NET 4.0中移除。为了解决这一问题,微软使用了命名空间切换。“命名空间切换的一般规则是,将System.Data.*下的类型迁移到System.Data.Entity.Core.*”。

一些例外情况包括:

  • System.Data.EntityState => System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute(注意类的名称也发生了变化,旧类依然存在并且可以工作,但被标注为废弃的。)
  • System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions(注意类的名称也发生了变化,旧类依然存在并且可以工作,但被标注为废弃的。)
  • 一些特殊的类(如DbGeography、DbGeometry)从System.Data.Spatial迁移到了System.Data.Entity.Spatial。

项目成员ajcvickers解释道,位于System.Data.dll程序集内System.Data命名空间中的EF相关类不会发生改变。

在更新项目的using语句之前,需要移除对System.Data.Entity.dll的引用。否则将混合使用Entity Framework的新旧版本。

还要注意的是,Entity Framework 5的第三方提供程序与EF 6不兼容。因此如果使用的不是SQL Server或SQL Server Compact Edition,则需要更新提供程序。这些改动很小,只是一些基本的东西,如覆盖IsGeographyColumn和GetGeographyAsync。

查看英文原文:Entity Framework 6 Brings Breaking Changes

你可能感兴趣的:(Entity Framework 6的重大变革)