Tôi đang có một hành vi kỳ lạ với nhibernate. Vấn đề là nhibernate thực hiện cập nhật trước khi xóa một thực thể. Tôi có một lớp Hạng và một lớp Sản phẩm. Danh mục có túi sản phẩm. Khi tôi loại bỏ một sản phẩm từ loại, nhibernate hiện sau:NHibernate cập nhật hàng trước khi xóa nó?
- Nó cập nhật đơn vị sản phẩm mà tôi lấy ra từ bộ sưu tập
- Nó xóa đơn vị sản phẩm từ cơ sở dữ liệu.
Dưới đây là bản đồ
<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>
Dưới đây là đoạn code
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();
}
và đây là kết quả:
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
Bất cứ ai có thể giải thích hành vi kỳ lạ này?
Cảm ơn.
Cảm ơn, bài đăng của bạn rất hữu ích :) – Davita