我與nhibernate有一個奇怪的行爲。問題是 nhibernate在刪除實體之前執行更新。 我有一個Category類和一個Product類。類別有一袋 產品。當我從類別中刪除產品,NHibernate的做了 如下:NHibernate在刪除它之前更新行?
- 它更新這是我從收集
- 它從數據庫中刪除產品實體去除產品實體。
這裏的映射
<class name="Category">
<id name="Id">
<generator class="hilo" />
</id>
<property name="Name" lazy="false" length="20" />
<bag name="Products" cascade="all-delete-orphan" lazy="false"
inverse="false">
<key column="CategoryId" />
<one-to-many class="Product" />
</bag>
</class>
<class name="Product">
<id name="Id">
<generator class="hilo" />
</id>
<property name="Name" lazy="false" />
<property name="Discontinued" lazy="false" />
<property name="Price" lazy="false" />
<many-to-one name="Category"
class="Category"
column="CategoryId"
cascade="none" />
</class>
下面的代碼
using (var session = NHibernateHelper.OpenSession())
using (var transaction = session.BeginTransaction())
{
var c1 = session.Load<Category>(32768);
c1.Ps.RemoveAt(0);
session.SaveOrUpdate(c1);
transaction.Commit();
}
和這裏的結果:
exec sp_executesql N'UPDATE Product SET CategoryId = null WHERE
CategoryId = @p0 AND Id = @p1',N'@p0 int,@p1 int',@p0=32768,@p1=65537
go
exec sp_executesql N'DELETE FROM Product WHERE Id = @p0',N'@p0
int',@p0=65537
go
任何人都可以解釋這種奇怪的行爲?
謝謝。
謝謝,你的文章非常有幫助:) – Davita 2011-01-22 13:48:44