1
我想在我的應用程序中創建一對一的映射,我嘗試了幾個在Stackoverflow和其他地方找到的示例,但沒有迄今爲止成功。如何使用映射屬性在NHibernate中創建一對一的映射
我有一個訂單類和一個預訂類。若干訂單可以在沒有預訂的情況下存在,但預訂必須始終有訂單。
我的計劃是把FK的預約表,代碼如下:
class Order
{
...
[OneToOne(Cascade = "all-delete-orphan")]
public Reservation Reservation
{
get;
private set;
}
}
和類預約:
class Reservation
{
...
[ManyToOne(Column = "order_id", NotNull=true, Unique=true)]
public Order Order
{
get;
set;
}
}
這工作得很好,但是當我嘗試刪除一個訂單:
session.Delete(myOrder);
session.FlushSession();
由於預訂FK爲空,我得到一個FK衝突異常,但由於Cascade參數,我期待自動刪除預留。
有什麼建議嗎?
謝謝
我不知道它是如何與屬性的工作,但你可能需要設置'在訂單預約財產逆= TRUE;。 – ChrisAnnODell 2011-03-25 14:09:36
看起來你並沒有'Order'和'Reservation'之間的1對1關係,而是多對一的關係,Chris說,你需要將其中的一個標記爲'inverse = true'。 – R0MANARMY 2011-03-25 14:24:40
ChrisAnnODell:我在Order類的Reservation屬性中看不到inverse選項。 R0MANARMY os的地方建議像我一樣使用ManyToOne,我發現問題,請參閱下面的答案。 – bcsanches 2011-03-26 02:39:00