连贯 NHibernate 正式发布 1.0 候选版

阅读数:1206 2009 年 8 月 23 日

话题:.NETDevOps语言 & 开发架构

连贯 NHibernate项目的创始人 James Gregory宣布项目已经到达了另一个里程碑——1.0 版本,当前已发布候选版本。

发布说明中提到在映射方面的多项特性和改进:

  • 简洁的方法名——清除了方法名中的多余信息,比如:WithLengthOf现在只剩下Length;ColumnName 改成 Column,WithTableName 变成 Table 等等
  • 删除 SetAttribute——在项目不支持所需属性时,SetAttribute 是程序员使用连贯 NHibernate 来解决问题的权宜之计。我们在连贯接口的主要属性支持方面已有很大的改善,所以你们无需该属性。如果我们仍遗漏你所需要的任何属性,请通知我们(最好给我们发个补丁程序)
  • 单独的子类映射——子类应当与其父类映射分别定义。使用 SubclassMap<T> 代替 ClassMap<T>。如果最顶层映射(ClassMap)包含 DiscriminateSubclassesOnColumn 调用,该子类则会以每个类分层结构一张表的方式映射。查看子类集获取更多信息。
  • 重命名静态入口点——AutoPersistenceModel.MapEntitiesFromAssemblyOf<Product> 过于冗长,重新命名为 AutoMap.AssemblyOf<Product>
  • 组件——在自动映射方面完善对组件的支持。运作方式不变,现在还支持所有集合和对象。查看组件获取更多信息。
  • 针对所有类型的IgnoreProperty——我们现在可以使用 IgnoreProperty 来支持多种类型,来代替每个实体类型。查看忽略属性获取更多信息。

在约定方面,我们发现:

  • 首先应用——它们在你显示设置 ClassMap 之前使用。这意味着不会意外重写你的映射
  • 默认应用——过去常约定使用 Accept 方法,大多数人只让它返回 true,这表示可应用于所有事物,或检查在 ClassMap 中是否已经设定某个值。考虑一下前面的变化,这使得 Accept 变得多余。约定可应用于所有事物。如果你不想那样,可用 IClassAcceptance 接口来添加这种行为
  • 可接受标准——在需要定义 Accept 的时候,有新的标准 API 以更一致的方式对它进行定义。查看可接受标准获取更多信息
  • ForeignKeyConvention——提供连续跨越整个映射的用于设定外键名称的基类。查看ForeignKeyConvention获取更多信息
  • ManyToManyTableNameConvention——用于设定多对多表名的(默认)基类。它比以前更加智能,无需重写显示设置并支持双向关联。查看ManyToManyTableNameConvention获取更多信息

Gregory 希望该项目不会长期停留在候选版阶段,随后会对其进行大量的测试。

连贯 NHibernate 通过 C# 代码提供连贯映射来使用 XML。它也提供自动映射,该映射使用直接从实体创建映射的机制。可以从InfoQ/ 连贯 NHibernate获取连贯 NHibernate 的快速入门资料。更详细的资料可从连贯NHibernate Wiki页获取。下载页包括了源代码和可执行文件。

查看英文原文:Fluent NHibernate Has Been Released as 1.0 RC