2011-04-07 10 views
1

を削除するときの問題私は、2つのクラス流暢NHibernateは:hasOneの関係

public PartMap() 
{ 
    Id(x => x.ID).GeneratedBy.Guid(); 
    HasOne(x => x.Stock) 
      .Cascade.All(); 
} 

public Stock 
{ 
    Id(x => x.ID).GeneratedBy.Guid(); 
    References(x => x.Part); 
} 

を持っているパートは、それは私がhasOneのを使用した理由ですが、一つだけの在庫を持っています。 データが正常に挿入され、部品があり、在庫があり、保存されています。削除しようとしたときに 私の問題は、私はそれを前に、関連する株式を削除せずに一部を削除しようと見、私は一部に株式foreingキーが

"ORA-02292: integrity constraint (PRINERGY.FK121AD9E59966BE23) violated " . 

に違反したことがエラーを取得しています。 どうすれば解決できますか?

答えて

4

これは1対1の双方向関連のようです。この関連付けをNH(およびFNH)にマッピングする方法には、主キーの関連付けと外部キーの関連付けという2つの方法があります。あなたの例は、外部キー関連に近いです。詳細については

外部キーの関連

public PartMap() 
{ 
    Id(x => x.Id).GeneratedBy.Guid(); 
    References(x => x.Stock).Unique().Cascade.All(); 
    Map(x => x.Name); 
} 

public StockMap() 
{ 
    Id(x => x.Id).GeneratedBy.Guid(); 
    HasOne(x => x.Part).Cascade.All().PropertyRef("Stock"); 
    Map(x => x.Name); 
} 

主キー関連

public PartMap() 
{ 
    Id(x => x.Id).GeneratedBy.Guid(); 
    HasOne(x => x.Stock).Cascade.All(); 
    Map(x => x.Name); 
} 

public StockMap() 
{ 
    Id(x => x.Id).GeneratedBy.Foreign("Part"); 
    HasOne(x => x.Part).Constrained(); 
    Map(x => x.Name); 
} 

http://fabiomaulo.blogspot.com/2010/03/conform-mapping-one-to-one.htmlを参照してください。

+0

ありがとう!!!!今働いています – Hada

+0

どのバージョンを使用しましたか?そして、あなたは解決としてこの答えをマークしていただけますか?:) –