Я пытаюсь определить и использовать фильтр NHibernate.Я посмотрел на многие другие сообщения на SO.Кроме того, я также использую FluentNhibernate.Когда я сравниваю мои файлы сопоставления hbm, все они выглядят правильно.Мой фильтр называется IsFlaggedForDelete.Вот соответствующие файлы:
filter-def.IsFlaggedForDelete.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false">
<filter-def name="IsFlaggedForDelete" condition=":IsFlaggedForDelete.deletedFlag = IsDeleted">
<filter-param name="deletedFlag" type="Int32" />
</filter-def>
</hibernate-mapping>
Вот пример файла сопоставления классов:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false">
<class xmlns="urn:nhibernate-mapping-2.2" name="MyCompany.MyProd.Models.Admin.OneOfMyTables, MyCompany.MyProd.Modules.Service, Version=0.1.2.0, Culture=neutral, PublicKeyToken=c1c38e54126179e5" table="`OneOfMyTables`">
<id name="Id" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Id" />
<generator class="MyCompany.MyProd.Data.Mapping.Conventions.IdGenerator, MyCompany.MyProd.Core, Version=0.1.2.0, Culture=neutral, PublicKeyToken=c1c38e54126179e5" />
</id>
<property name="IsDeleted" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="IsDeleted" />
</property>
<property name="Code" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Code" />
</property>
<many-to-one cascade="none" class="MyCompany.MyProd.Models.Admin.PartitionAttribute, MyCompany.MyProd.Modules.Bmc.Service, Version=0.1.2.0, Culture=neutral, PublicKeyToken=c1c38e54126179e5" fetch="select" name="PartitionAttribute">
<column name="PartitionAttributeId" />
</many-to-one>
<filter name="IsFlaggedForDelete" condition=":IsFlaggedForDelete.deletedFlag = IsDeleted" />
</class>
</hibernate-mapping>
Обратите внимание, что они оба добавляются с помощью кода, используя FLUentNHibernate
В моем коде у меня есть следующее:
Session.EnableFilter("IsFlaggedForDelete").SetParameter("deletedFlag", 0);
var gotten = Session.Get<T>(id);
Я пробовал разные методы для настройки, но с учетомсгенерированный xml (который мне кажется правильным) Я не могу понять, почему фильтр не применяется.Я попытался обернуть Фильтр в соглашение (FluentNH), но все безрезультатно.
Любые предложения приветствуются
Спасибо