NHibernation遅延ロードでの説明が必要:私が子供のコレクションの価格でクラスの製品を持っている
public class Product
{
private ICollection<Price> prices;
protected Product()
{
prices = new List<Price>();
}
}
ザ・NHibernateのマッピングは、この
<xml version="1.0" encoding="utf-8">
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Product" table="Product">
<id name="id" column="ProductId" access="field">
<generator class="identity"/>
</id>
<bag name="prices" access="field" cascade="all-delete-orphan" lazy="true">
<key column="ProductId"/>
<one-to-many class="Product.Price"/>
</bag>
</class>
のように見えるあなたは、その安値を見ることができますコレクションが遅延読み込まれます。
public ICollection<Product> ListProducts()
{
ISession session = GetCurrentSession();
return session
.CreateCriteria(typeof(Product))
.List<Product>();
}
機能は以下の内容を持っているGetCurrentSession()、上で参照:
製品は、データベースからこのようにロードされ、私は製品をロードすると
protected ISession GetCurrentSession()
{
return sessionProvider.GetCurrentSessionFrom(sessionFactoryConfigName);
}
、私はそれに期待します価格がlazy-loading = trueであるため、製品内のPrice-Collectionsの場所はプロキシです。しかし、デバッグ中は、Visual Studioウォッチツールを使用して製品を見ることができ、フルコンテンツ(すべてのプロパティを含む価格)の価格コレクションを見ることができます。なぜこれはそうですか?
またはlog4netのでNhiberanteによって記録されたSQL文を使用します – Paco