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