2011-05-26 57 views
3

如何在Fluent NHibernate映射中的一對多集合上指定加載加載?指定Fluent NHibernate映射中的急切加載

我嘗試以下,但檢索父對象時,我仍然得到兩個查詢和訪問它的「功能」屬性:

  HasMany<FeatureInstance>(s => s.Features).AsSet() 
      .Inverse() 
      .Cascade.SaveUpdate() 
      .KeyColumn("SiteId") 
      .Access.ReadOnlyPropertyThroughCamelCaseField() 
      .Not.LazyLoad(); 

感謝 本

回答

0

我認爲你必須定義一個獲取策略。見here

1

即使您有兩個查詢,它仍然被稱爲預先加載,因爲兩個查詢都立即執行(在延遲加載中,第二個查詢只會按需執行)。

如果您要查找JOIN SQL查詢,可以使用.Fetch.Join()來強制執行JOIN。但是要注意,當你以後想使用查詢從數據庫獲取父對象時,得到的集合將包含每個父對象的多個副本,具體取決於子對象的數量(考慮SQL JOIN返回的行數)所以在大多數情況下它並不是非常有用。