3
我有JoinQueryOver NHibernate的3.1QueryOver通過加入和加入條件的獨立,如果
Person類具有通過身份類(一個對一個) 代碼是Person類的字段和相關聯的QueryOver FirstName是Identity類的字段。
var q = SessionInstance.QueryOver<Person>()
.Where(p => p.Code.IsLike(code,MatchMode.Start))
.Full.JoinQueryOver(p => p.Identity);
if (!String.IsNullOrEmpty(firstName))
q = q.Where(i => i.FirstName.IsLike(firstName, MatchMode.Anywhere));
return q.List<Person>();
結果是正確的,但是,有一個問題。搜索不包括Person類中的Code域的空值。我更正爲以下查詢。
var q = SessionInstance.QueryOver<Person>()
.Full.JoinQueryOver(p => p.Identity);
if (!String.IsNullOrEmpty(Code))
q = q.Where(i => i.Person.Code.IsLike(code, MatchMode.Start));
if (!String.IsNullOrEmpty(firstName))
q = q.Where(i => i.FirstName.IsLike(firstName, MatchMode.Anywhere));
return q.List<Person>();
現在我有一個運行時錯誤此消息:
無法解析屬性:的Identity.Code:MyNameSpace.Domain.Entities.Identity
在查詢中通過兩個類之間的連接,如何通過if添加兩個條件(where)。
(if parameter != null)
感謝。我的問題解決了。 – Ehsan
當然,第一個解決方案解決了我的問題。第二種解決方案的最後一個構建錯誤是,如果通過此消息:不能隱式地將類型'NHibernate.IQueryOver'轉換爲'NHibernate.IQueryOver 」。存在明確的轉換(您是否缺少演員?) –
Ehsan