我們試圖在DAL中實現規範模式,但遇到了一些問題。看來NHibernate無法將表達式轉換爲可用的表達式,但如果這是問題,我不能100%確定。NHibernate.QueryException與看似簡單的查詢表達式
我有一個客戶對象,其中包含一個社會安全號碼對象,該對象又包含名爲LastSegment的屬性,該屬性僅返回ssn的最後四位數字。在創建搜索針對SSN的最後一段的規範,我們提出了以下表達式,其中值是由用戶通過在搜索條件:
a => a.Customer.Ssn.LastSegment == value
似乎相當簡單。然而,這在運行時,一個異常被拋出,出現以下錯誤:
NHibernate.QueryException : could not resolve property: Ssn.LastSegment of: [namespace].Customer
我是不是正確解釋錯誤在NHibernate的我的表情不會翻譯成東西它可以使用?有什麼辦法可以解決這個問題嗎?
作爲進一步說明,當我們在某些對象上調用ToString()
時,也會出現此錯誤。
編輯: 挖掘到SocialSecurityNumber對象,我注意到它是一個結構,而不是一個類。這可能會導致問題嗎?
LastSegment實際返回的最後4位數字的財產UnformattedValue的。但是,如果我將表達式更改爲UnformattedValue.EndsWith(value)。它仍然爆發說它不能解決財產:Ssn.UnformattedValue。 – Brian
@布萊恩 - 什麼是UnformattedValue的類型?如果它是一個字符串,可以使用字符串SubString – Aducci
UnformattedValue只是一個字符串:public string UnformattedValue – Brian