【发布时间】:2010-12-04 12:10:37
【问题描述】:
我有一个如下所示的映射:
<class name="Record">
<map name="Values">
<key column="RecordFK"/>
<index column="FieldFK"/>
<element column="Value"/>
</map>
</class>
将其翻译成英语:记录将字段映射到值。在HQL中,我可以查询这个map,如下:
from Record rec where rec.Values[:fieldFK] = :value
是否可以使用 NHibernate 3.0 中的新 Linq 提供程序而不是 HQL 重新创建此查询?我尝试了以下代码但没有成功:
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 nhibernate map