У меня есть эта проблема.У меня есть такой класс:
public class WfStep
{
private readonly IDictionary properties = new Hashtable();
public virtual Guid Id { get; private set; }
public virtual string Name { get; set; }
public virtual dynamic Properties { get { return new HashtableDynamicObject(properties); } }
и его файл сопоставления, например:
<class name="ConsoleApplication4.WfStep" table="WFSteps">
<id name="Id">
<generator class="guid"/>
</id>
<property name="Name" />
<map name="Properties" table="WFSteps_Properties" access="field.lowercase">
<key column="StepId" />
<index column="PropertyName" type="System.String"/>
<composite-element class="ConsoleApplication4.ValueItem, ConsoleApplication4">
<property name="Value" type="System.String"/>
<property name="ValueType" type="System.String"/>
</composite-element>
</map>
Этот пример перенесен из: Ayende Support dynamicполя с NHibernate и .NET 4.0
Затем я сохраняю объект в БД следующим образом: т.е.до 2010 года, т. е .:
var Session.Query<WfStep>().Where(x=>x.Properties.DateProperty.Year == 2010);
Выдает ошибку:
Дерево выражений может не содержать динамическую операцию
Как можнозапросить этот тип класса, который имеет динамические свойства.