Linq查詢我有一個映射,看起來像這樣:NHibernate的3.0對<map>元素,而不是使用HQL
<class name="Record">
<map name="Values">
<key column="RecordFK"/>
<index column="FieldFK"/>
<element column="Value"/>
</map>
</class>
翻譯這英語:一個記錄域映射到值。在HQL,我可以查詢這個圖,如下:
from Record rec where rec.Values[:fieldFK] = :value
是否有可能重新使用NHibernate的3.0,而不是HQL新LINQ提供此查詢?我嘗試下面的代碼沒有成功:
var records = session.Query<Record>()
.Where(rec => rec.Values[field.Key] == "foo");
此時的NHibernate試圖解釋詞典存取產生的誤差:
System.NotSupportedException: System.String get_Item(System.Int32)
有什麼方法可以「教」NHibernate如何將此C#表達式轉換爲SQL?
我會根據你的建議創建一張票。我查看了關於擴展Linq提供程序的信息,並且我不知道如何實現BuildHql重寫以使此案例有效。有什麼建議麼? – brianberns 2010-11-17 19:08:14
這是我創建的票:http://216.121.112.228/browse/NH-2416 – brianberns 2010-11-17 19:21:15
我有一個概念證明工作;本週我會嘗試上傳一個補丁程序。 – 2010-11-17 21:25:49