使用NHibernate进行项目应用一周。单表的增,删,改没有问题。
一对一:在NHibernate中有两种设置,第一种A表,B表使用相同的主键。第二种A表,B表中使用Aid做外键。现使用第二种的设置:
A表.hbm.xml:
<one-to-one name="TheB" class="classB" property-ref="TheA" outer-join="false" cascade="delete" />
B表.hbm.xml:
<many-to-one name="TheA" column="Aid" class="classA" unique="true" />
在读A时,TheB会随后读出。试了网上的几种延时加载的配置,没有实现。
读B时,TheA会延时加载。在使用TheA.id时,不会引发加载。
一对多:
A表
<bag name="TheBs" table="B" lazy="true" inverse="true" cascade="all">
<key column="AId"/>
<one-to-many class="ClassB"/>
</bag>
B表
<many-to-one name="TheA" column="AId" class="ClassA" />
TheBs,TheA都可以延时加载。