2013-02-21 32 views
0

我有兩種模式,它們之間有一對一的關係 - RFP和Bid。 下面是相關的代碼 -如何將外鍵保存在兩個表中? - nhibernate

Rfp.hbm.xml:

<one-to-one name="Bid" class="Bid" property-ref="Rfp" /> 

Bid.hbm.xml:

<many-to-one name="Rfp" class="Rfp" column="RfpId" not-null="true" /> 

Rfp.cs:

public virtual Bid Bid { get; set; } 

投標。 cs:

public virtual Rfp Rfp { get; set; } 

當我做如下 -

bid.Rfp = Repository.Get<Models.Rfp>(command.BidDetails.RfpId); 
Repository.SaveOrUpdate(bid); 

RFP的foregin鍵保存在投標紀錄,但投標的外鍵不會保存在RFP記錄。因此,我無法通過說bid.Rfp來獲得特定的RFP出價 - 它返回null。

我怎樣才能做到這一點?

+0

在一對一的關係,只有一個外鍵。你是說Rfp表有外鍵出價嗎?如果是這樣,你爲什麼將它映射爲一對一而不是多對一? – Firo 2013-02-22 20:30:31

+0

我跟着寫這篇文章 - http://ayende.com/blog/3960/nhibernate-mapping-one-to-one。這兩個實體的一方在這裏是多對一的。我知道一對一的關係只能用一個外鍵來實現。我需要一種方法來獲取出價的RFP和RFP的出價。我希望這兩個工作 - 「Bid.Rfp」和「Rfp.Bid」。 – mridula 2013-02-25 05:56:19

回答

0

擴展屬性

private Rfp rfp; 
public virtual Rfp Rfp 
{ 
    get { return rfp; } 
    set { 
     rfp = value; 
     if (rfp != null && rfp.Bid != this) 
      rfp.Bid = this; 
    } 
}