连贯 NHibernate 项目的创始人 James Gregory宣布项目已经到达了另一个里程碑——1.0 版本,当前已发布候选版本。
发布说明中提到在映射方面的多项特性和改进:
- 简洁的方法名——清除了方法名中的多余信息,比如:WithLengthOf现在只剩下Length;ColumnName 改成 Column,WithTableName 变成 Table 等等
- 删除 SetAttribute——在项目不支持所需属性时,SetAttribute 是程序员使用连贯 NHibernate 来解决问题的权宜之计。我们在连贯接口的主要属性支持方面已有很大的改善,所以你们无需该属性。如果我们仍遗漏你所需要的任何属性,请通知我们(最好给我们发个补丁程序)
- 单独的子类映射——子类应当与其父类映射分别定义。使用 SubclassMap
代替 ClassMap 。如果最顶层映射(ClassMap)包含 DiscriminateSubclassesOnColumn 调用,该子类则会以每个类分层结构一张表的方式映射。查看子类集获取更多信息。 - 重命名静态入口点——AutoPersistenceModel.MapEntitiesFromAssemblyOf
过于冗长,重新命名为 AutoMap.AssemblyOf - 组件——在自动映射方面完善对组件的支持。运作方式不变,现在还支持所有集合和对象。查看组件获取更多信息。
- 针对所有类型的 ****IgnoreProperty——我们现在可以使用 IgnoreProperty 来支持多种类型,来代替每个实体类型。查看忽略属性获取更多信息。
在约定方面,我们发现:
- 首先应用——它们在你显示设置 ClassMap 之前使用。这意味着不会意外重写你的映射
- 默认应用——过去常约定使用 Accept 方法,大多数人只让它返回 true,这表示可应用于所有事物,或检查在 ClassMap 中是否已经设定某个值。考虑一下前面的变化,这使得 Accept 变得多余。约定可应用于所有事物。如果你不想那样,可用 IClassAcceptance 接口来添加这种行为
- 可接受标准——在需要定义 Accept 的时候,有新的标准 API 以更一致的方式对它进行定义。查看可接受标准获取更多信息
- ForeignKeyConvention——提供连续跨越整个映射的用于设定外键名称的基类。查看 _ ForeignKeyConvention _ 获取更多信息
- ManyToManyTableNameConvention——用于设定多对多表名的(默认)基类。它比以前更加智能,无需重写显示设置并支持双向关联。查看 _ ManyToManyTableNameConvention _ 获取更多信息
Gregory 希望该项目不会长期停留在候选版阶段,随后会对其进行大量的测试。
连贯 NHibernate 通过 C#代码提供连贯映射来使用 XML。它也提供自动映射,该映射使用直接从实体创建映射的机制。可以从 InfoQ/ 连贯 NHibernate 获取连贯 NHibernate 的快速入门资料。更详细的资料可从连贯 NHibernate Wiki 页获取。下载页包括了源代码和可执行文件。
评论