我对 nhibernate 有一个非常简单的问题(我刚开始使用它)
我有以下 hbm 映射文件:
<class name="Customer" table="Customers" lazy="false">
<id name="Id" column="CustomerId">
<generator class="native">
</id>
<property name="Name" />
<property name="Picture" type="BinaryBlob" />
<bag name="Orders" cascade="all-delete-orphan" lazy="false">
<key column="CustomerId" />
<one-to-many class="Order" />
</bag>
</class>
<class name="Order" table="Orders" lazy="false">
<id name="Id" column="OrderId">
<generator class="native">
</id>
<property name="Name" />
<property name="Picture" type="BinaryBlob" />
<bag name="Products" cascade="all-delete-orphan" lazy="false"
<key column="OrderId" />
<one-to-many class="Product" />
</bag>
</class>
<class name="Product" table="Products" lazy="false">
<id name="Id" column="ProductId">
<generator class="native">
</id>
<property name="Name" />
<property name="Picture" type="BinaryBlob" />
<property name="ProductStr" />
</class>
Customer 类有一个 int id、字符串名称、byte[] 图片和 IList of Orders。
Order 类有一个 int id、string name、byte[] 图片和 IList of Products。
产品类有一个 int id、字符串名称、byte[] 图片、字符串 productstr 和 int 数量(我目前不使用)
客户表有一个客户 ID、名称和图片(varbinary(max))。
订单包含订单 ID、名称、图片和客户 ID
产品具有产品 ID、名称、图片、productstr 和订单 ID。
问题:当我使用 session.Delete(csCustomer) 删除客户时,它会成功地从数据库中删除整个客户,但不会删除所有订单。它只在已删除客户的所有订单中的客户 ID 字段中放置 null。
任何人都可以发现我的配置有问题吗?我看到了一个使用 nhibernate 的示例,他们在订单类中保存了对客户的引用,并在产品类中保存了对订单的引用,这是我需要做些什么来修复它吗?