我有下一个表Order,Transaction,Payment.类Order有一些属性:
public virtual Guid Id { get; set; }
public virtual DateTime Created { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
我又增加了两个:
public virtual IList<Transaction> Transactions { get; set; }
public virtual IList<Payment> Payments { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何保存Transactions和Payments列出数据库中的(关系)?
请参阅参考文档中的集合映射.有几种方法可以映射IList属性.
甲袋是无序的,未加索引的集合可以多次包含相同的元件.
<bag name="Transactions" lazy="true" table="Transaction" >
<key column="OrderId"/>
<one-to-many class="Transaction"/>
</bag>
Run Code Online (Sandbox Code Playgroud)
一组是一个无序,没有索引的集合包含独特的元素.
<set name="Transactions" lazy="true" table="Transaction" >
<key column="OrderId"/>
<one-to-many class="Transaction"/>
</set>
Run Code Online (Sandbox Code Playgroud)
一个列表是一个有序和索引的集合并且可能多次包含相同的元素.
<list name="Transactions" lazy="true" table="Transaction" >
<key column="OrderId"/>
<index column="ordering"/>
<one-to-many class="Transaction"/>
</list>
Run Code Online (Sandbox Code Playgroud)
NHibernate可以使用sort属性以排序顺序返回无序集合.
没有提到级联,没有讨论收集映射我们完整.这使得父实体上的操作可以应用于集合实体.
<many-to-one>或<many-to-many>关联上启用级联通常没有意义.级联通常是有用<one-to-one>和<one-to-many>协会.