2011-09-20 66 views
2

我試圖建立兩個類之間的一對一關係(雙向引用關係)。兩個屬性都不應該爲空。問題是當您嘗試先將另一個保存到另一個時,我遇到空值或瞬變值錯誤。Nhibernate雙向一對一(不是HasOne)

class A 
{ 
    C C {get;set;} 
} 

class C 
{ 
    A A {get;set;} 
} 


class AMapping : ClassMap<A> 
{ 
    AMapping() 
    { 
     References(x=>x.C) 
      .Not.Nullable(); 
    } 
} 
class CMapping : ClassMap<C> 
{ 
    CMapping() 
    { 
     References(x=>x.A) 
      .Not.Nullable(); 
    } 
} 

我瞭解到,自從NHibernate的不能讓一個對象不存在的引用(在databaase)還沒有,但會有一個模式或者說我可以用它來繞過這個限制的功能?

回答

0

嘗試在Many-to-One映射的一側設置cascade =「none」。喜歡的東西:

References(x=>x.C) 
     .Not.Nullable() 
     .Cascade.None(); 
+0

這不是多到一,只要一到一個 – Jonn

+0

用流利的NH,引用是多對一的吧?我不是流利的NH用戶,但這就是文檔在這裏所說的http://wiki.fluentnhibernate.org/Fluent_mapping#References_.2F_many-to-one –