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"。