原文名称:EF 4.3 Released
原文地址:http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-released.aspx
EF 4.3 下载地址:http://nuget.org/packages/EntityFramework/
在过去的六个月中,我们发布了有关 Code First 迁移的一系列预览,今天,我们将迁移作为 EF4.3 的一部分进行完整的发布。
在 EF 4.2 与 4.3 之间的变化:
新的 Code First 迁移特性:
这是 EF 4.3 中主要的新特性,允许通过 Code First 创建的数据库可以与你的代码模型一起增量进化。
移除的 EdmMetadata 表:
如果你允许简单地运行程序来通过 Code First 创建数据库(即没有显式启用迁移),那么,就会获得作为迁移一部分特性的,数据库架构生成的好处。
修复了 GetDatabaseValues:
在早期版本中,如果你的 entity 和 context 没有定义在同一个命名空间中,这个方法调用就会失败,这个问题已经被修复,使用 GetDatabaseValues 不再需要定义在同一个命名空间下。
修复了对 DbSet 名字中 Unicode 字符的支持:
在早期版本中,当在一个名字中包含有 Unicode 字符的 DbSet 中进行查询的时候,会导致异常,这个问题已经被修复了。
在非公共属性上的数据标注问题:
默认情况下,Code First 不会包含私有的,保护的,或者 internal 的属性,即使在你的模型中手工包含的情况下。在早期的版本中使用 Fluent API 将会忽略这类成员上的任何数据标注。这个问题已经被修复,现在 Code First 将会处理在模型中手工定义的私有、保护、内部的成员了。
更多的配置设置:
我们在配置文件中提供了更多的 Code First 相关的设置,这可以使得你有能力从配置文件中设置默认的链接工厂,以及数据库的初始化器。你还可以指定构造这些对象的构造器参数,更多详细内容可以见 EF 4.3 Configuration File Settings 博客内容。
已知的问题
在 EF 4.3 发布以后的数周,我们将会发布一个 EF 4.3.1 的补丁来处理这些问题。
已知的 EF 4.3 的问题:
使用 MOQ 框架 mock DbContext 错误:
对这个问题,我们将在 4.3.1 发布中修复,详细内容见: this Stack Overflow question
TPC 映射
在访问数据库的时候导致 "Unknown Columnname" 异常。
不是所有硬编码列的数据类型都在数据库生成:
如果你使用列数据类型标注,或者 HasColumnType 这样的 Fluent API 方法来硬编码列的数据类型(比如:xml, money 等等),在创建数据库的时候,这些数据类型不会被使用,在 EF 4.3.1 发布中会包含修复。