我使用的是NHibernate 3.3.3.4001。我有一個問題,在發出Get請求時,NHibernate不會延遲加載數據。相反,它會填充整個對象模型,導致性能非常低下。該.hbm文件如下:NHibernate不懶加載
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="My.Assembly" namespace="Assembly.Model">
<class name="Parent" table="tblParent">
<id name="ID">
<generator class="native"></generator>
</id>
<version name="Version" column="Version"/>
<component name="Children">
<bag name="Collection" table="tblChildren"
cascade="save-update, merge" inverse="true">
<key column="ParentID"></key>
<one-to-many class="Children"></one-to-many>
</bag>
</component>
<property name="DateCreated" column="DateCreated" update="false" insert="false" />
<property name="Inactive" column="Inactive" />
</class>
</hibernate-mapping>
我所預料的NHibernate加載所有子對象懶洋洋地,而不是發送查詢到數據庫。我曾嘗試添加明確的lazy = true
和default-lazy=true
,但它沒有區別。我檢查了Config
對象,可以看到映射有islazy=true
。
我打電話找如下:
using (var transaction = Session.BeginTransaction())
{
t = Session.Get<T>(id);
transaction.Commit();
}
我困惑的是爲什麼這不加載懶洋洋的,但查詢所有子對象的數據庫?
謝謝,這讓我走上了正軌。主要問題是''嵌套在'' –
user2984303
對,很高興看到這一點。享受NHibernate,偉大的工具;) –