2012-05-29 37 views
0

無法提出非常基本的問題,但仍然在這裏。 當使用像這樣nhibernate查詢無收藏

List<User> users = session.Query<User>.ToList(); 

查詢在調試我看到,除了用戶的實體,我獲取和角色的收集和照片集。

我的問題是我怎麼可以只選擇用戶採集無子集。

感謝

更新:

public RoleMap() 
{ 
    Table("Role"); 
    Id(x => x.Id).GeneratedBy.Identity(); 
    Map(x => ... 
    References(x => x.User).Column("UserId");   
} 

據我所知延遲加載默認情況下開啓。糾正我如果我在這裏做錯了什麼。

+0

你在調試什麼?你檢查SQL查詢嗎? –

+0

我正在逐行調試和在用戶集合中我默認加載了角色集合。 – panjo

+0

您是否從Web服務返回這些結果? – jim

回答

1

仔細檢查你生成的sql。

延遲加載默認是開啓的,所以我覺得你是在+符號調試運行相關的收集進入這些收藏品和那些應該對那個標誌的需求點擊負荷。

請使用NHibernate的探查器來檢查生成的sql。

+0

謝謝。在生成的SQL中沒有集合。 – panjo

4

當你看在調試集合,你會從數據庫使用NHibernate的創建代理加載的數據。檢查生成的SQL查詢,當您執行

List<User> users = session.Query<User>.ToList(); 

你應該只看到User數據,角色和照片不應該存在。

+0

? – panjo

+0

對不起,忘了映射,編輯我的回答 –

0

用突起......

ICriteria crit = Session.CreateCriteria<District>(); 

     crit.SetProjection(Projections.ProjectionList() 
     .Add(Projections.Alias(Projections.Property("Description"), "Description")) 
     .Add(Projections.Alias(Projections.Property("Active"), "Active")) 
     .Add(Projections.Alias(Projections.Property("Id"), "Id")) 
     ); 
     crit.SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(District))); 
     return crit.List<District>(); 

這滋潤你感興趣的屬性,而忽略其他...好削減流量的通過線路的數量。