2
有沒有加載NHibernate實體的方法,在子集合上有一個子句?我有一個場景,在「操作」中記錄更改,即一個操作可以包含對多個實體的更改。當我想要加載特定實體的日誌時,我加載了對該實體進行的任何更改的所有操作。加載這些操作會導致加載所有更改 - 我只希望加載相關更改。NHibernate負載實體與子集合的一部分
類:
public class Operation{
public virtual DateTime TimeStamp { get; set; }
public virtual IList<Change> Changes { get; private set; }
}
public class Change{
public virtual string ChangeText { get; set; }
public virtual int EntityId { get; set; }
}
獲取操作對於給定的實體
Session.QueryOver<Operation>().Where(o => o.Changes.Any(c => c.EntityId == entityId));
我喜歡選項II,但在過去的「C」則是變化的集合,而不是每個項目更改...看起來它必須就像'Where(cl => cl.Where(c => c.EntityId == entityId))'',但是這個目前給我一個編譯錯誤.. – hazard
'session.QueryOver() .JoinQueryOver(o => o.Changes) 。這裏(c => c.EntityId == entityId);'給我一個編譯器錯誤,因爲c是IList ,而不是更改 –
hazard
我更新了我的答案。 JoinQueryOver應該與''一起提供。現在它應該工作。更多信息和細節可以在文檔中找到:http://nhforge.org/doc/nh/en/index.html#queryqueryover-associations –