📜  NHibernate-集合映射(1)

📅  最后修改于: 2023-12-03 14:44:36.414000             🧑  作者: Mango

NHibernate-集合映射

NHibernate 是一个流行的 .NET ORM (对象关系映射) 框架,提供了持久化实体对象到关系型数据库的方便性。NHibernate 支持集合类型的映射,使得实体对象与关联的集合对象可以自动进行增删改查操作,从而简化了开发者的工作量。

NHibernate 支持以下集合类型的映射:

  • IList,ICollection,Iesi.Collections.Generic.ISet 等 .NET 集合接口类型;
  • IDictionary,IDictionary<TKey, TValue> 等字典接口类型;
  • ISet 等第三方集合接口类型。

下面是一个使用 IList 映射集合的示例:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Category" table="Categories">
    <id name="Id" column="CategoryId">
      <generator class="native" />
    </id>
    <property name="Name" column="CategoryName" />
    <bag name="Products" inverse="true" cascade="all-delete-orphan">
      <key column="CategoryId" />
      <one-to-many class="Product" />
    </bag>
  </class>
</hibernate-mapping>

这里我们定义了一个类 Category,它包含了一个 IList 类型的 Products 属性,该属性映射到数据库中 Categories 表和 Products 表之间的一对多关系。bag 元素用于配置关联集合映射,其中包括 key 元素和 one-to-many 元素,它们用于指定关联的键和值的映射关系。同时,我们还指定了 inverse="true" 和 cascade="all-delete-orphan" 属性,分别用于启用级联删除和反向关联映射。

对于字典类型和第三方集合类型的映射,其配置方式与上面类似,只需要将 bag 元素替换为 map 元素和 set 元素即可。

NHibernate 集合映射提供了多种映射方式和高度可定制化的配置选项,可以根据实际需求选择最适合的方式进行映射。同时,NHibernate 还支持 LINQ 查询和 NHibernate Query Language 查询等强大的查询方式,以及缓存、事务、延迟加载等特性,使得开发者可以轻松地编写出高质量的数据访问代码。