0
我在兩個表格 - 患者和研究之間建立了多對一的關係。 當病人被刪除時,我希望他的所有研究也會被刪除。 在的hbm.xml文件相關的線路有:NHibernate將「ON-DELETE」選項設置爲RESTRICT而不是CASCADE
<class name="Study" table="Studies">
<id name="Uid">
<generator class="guid"/>
</id>
<many-to-one name="Patient" class="Patient" column="PatientId" lazy="false" cascade="all"/>
</class>
和:
<class name="Patient" table="Patients">
<id name="Uid">
<generator class="guid"/>
</id>
<property name="PatientId"/>
<property name="Name" />
</class>
我使用NHibernate的3.3.1和MySQL服務器。 通過設置cascade=all
我期望在MySQL工作臺中看到FK選項On Delete
將設置爲CASCADE
,但取而代之的是它被設置爲RESTRICT
。 當我手動將其更改爲CASCADE
(通過工作臺),一切工作正常。 有沒有辦法自動將它設置爲CASCADE
?我也嘗試在hbm.xml文件中設置on-delete=cascade
,但它不起作用。
有什麼建議嗎?
感謝您的回答。我無法更改關係,因爲實體位於不同的程序集中。研究知道患者實體,但反之亦然。有沒有另外一種方法可以解決它,而無需添加手動腳本? – user1788063
關於「不同的裝配體問題」...將你的研究(例如IStudy)的抽象放到一個你的類型都知道的裝配體中(或者在與Patient相同的裝配體中),並在你的領域模型中使用它。 – Roger