Единственная работа, которую я нашел, показана во фрагменте кода ниже с использованием Fluent NHibernate.Это некрасиво, так как это сложное кодирование SQL в вашем отображении, но оно работает.Свойство Check имеет значение None, поэтому подсчеты игнорируются.Я не знаю, сможете ли вы сделать это, используя прямые файлы HBM, но, вероятно, есть способ.Было бы здорово, если бы в NHibernate (или Fluent NH) была опция конфигурации, чтобы либо установить ожидаемое обновленное количество строк, либо игнорировать его при необходимости.
public class OrderMap : ClassMap<Order>
{
public OrderMap()
{
Id(c => c.Id, "order_id").GeneratedBy.Native();
Table("order");
Map(c => c.GroupId, "group_id");
Map(c => c.Status, "status");
Map(c => c.LocationNumber, "location");
SqlInsert("insert into order (group_id, status, location) values (?, ?, ?)").Check.None();
SqlUpdate("update order set group_id = ?, status = ?, location = ? where order_id = ?")).Check.None();
SqlDelete("delete order where order_id = ?").Check.None();
}
}
РЕДАКТИРОВАТЬ: Для тех несчастных людей, которые неосведомленный о Fluent NHibernate или любящий болезненное создание файлов HBM вручную, вот файл HBM для этого образца отображения:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Your.DomainModel.Entities.Order, Your.DomainModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="order">
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" unsaved-value="0">
<column name="order_id" />
<generator class="identity" />
</id>
<property name="GroupId" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="group_id" />
</property>
<property name="Status" type="System.Int16, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="status" />
</property>
<property name="LocationNumber" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="loc_num" />
</property>
<sql-insert check="none">insert into order (group_id, status, location) values (?, ?, ?)</sql-insert>
<sql-update check="none">update order set group_id = ?, status = ?, location = ? where order_id = ?</sql-update>
<sql-delete check="none">delete order where order_id = ?</sql-delete>
</class>
</hibernate-mapping>