2009-02-19 61 views
1

我有一些麻煩讓NH堅持我的對象圖。NHibernate - 這是什麼樣的關聯?

我有(像)這樣的:

/*Tables*/ 
TABLE Parent 
    ParentID PK 
    LastEventID NULL 

TABLE Event 
    EventID PK 
    ParentID FK NOT NULL 

//Model Classes 

public class Parent 
{ 
    public List<Event> Events; //Inverse 

    //Denormalized bit 
    public Event LastEvent; //not inverse 

} 

public class Event 
{ 
    public Parent Parent; //Makes the association up there Inverse 
} 

我創建一個新的父,創造了新的事件,將新事件 到Parent.Events和設置父。最後的事件到新的事件。

當我告訴NH保存父對象時,首先得到一個關於臨時對象 的錯誤。我認爲它是因爲Parent和Event之間的聯繫 不清楚。

SQL需要去的方式是插入帶有空的 LastEvent的Parent,然後插入Event,然後更新Parent.LastEvent。

那麼我該如何獲得NH來做到這一點?

回答

0

沒有看到您的映射架構,我不得不猜測。

您是否在級聯您的更新?從reference

要在相關對象的圖形保存或更新所有對象,則必須

  • 保存(),saveOrUpdate()方法或Update()每個單獨的對象或
  • 使用cascade =「all」或cascade =「save-update」映射關聯的對象。

假設你已經沒有這個,不添加級聯=「全」或級聯=「保存更新」到一邊,並且標明inverse =「true」來解決這個問題?

+0

是的,這有幫助。事實證明,真實情況更加複雜(這是對問題區域的簡化)。緊接着的問題就是通過您所描述的來解決的。 – brendanjerwin 2009-02-19 21:34:08