У меня есть отображение, которое выглядит так:
<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
Можно ли заново создать этот запрос, используя новый провайдер Linq в NHibernate 3.0 вместо 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?