NHibernate一对多映射保存数据

  • Iesi.Collections.Generic.Iset<T>使用

    Iset集合中,每个对象唯一。

    在NHibernate中,在父类中对应子类的Iset集合时,因为Set类为抽象类,所以不能实例化Set类。

    Iset<T> list=new Set<T>()将报‘无法创建抽象类或接口“Iesi.Collections.Generic.Set<>”的实例’错误。

    HashedSet<T>继承于DictionarySet<T>抽象类;DictionarySet<T>抽象类继承于Set<T>抽象类;Set<T>抽象类继承于Iset<T> 接口。所以Iset<T>接口可以实现为:ISet<T> list = new HashedSet<T>()。

  • 父端级联保存对象

    当从父类中保存数据时,因为nhibernate先插入父表数据,然后插入外键为null的子表数据,然后在生成更新子表的update语句。所以外键必须能够为null,否则将报错。

    当父端inverse="true"时将只生成插入语句,不会生成更新外键的update语句,所以必须inverse="false"。

原文地址:https://www.cnblogs.com/wanghonghu/p/2717636.html