唯一的工作,我身邊已經找到下面使用功能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();
}
}
編輯: 對於那些不幸的人是不知道功能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>
我不使用流利的NHibernate,你知道這適用於NHibernate設置?我不知道應該在哪裏寫(我不使用任何ClassMap,也不知道它是什麼,而且我沒有看到像SqlInsert之類的函數)。 – Carl
請參閱編輯我的答案。希望你沒有手動創建HBM。但是,如果是,肯定看看Fluent NHibernate或NHibernate 3.0中新的流暢映射能力可以爲你做什麼。 –
謝謝你。是的,我正在手動創建HBM,但現在不是問題(我不覺得這特別困難)。 – Carl