2011-12-22 182 views
0

我'新NHibernate和我有個任務,加強項目與existinig implementation.The目前的設計是直線前進,如「第一個項目」:多個一對多關係映射

store(1)->(many)Employee 

現在我想這樣做:

store(1)->(many)Employee AND 
Empoyee(1)->(many)Child 

重新實現從商店員工的映射邏輯員工,兒童不能正常工作。 試圖找到在網上類似的東西enter code here但沒有運氣。 任何關於映射的提示非常感謝。

感謝

@MeckLey:非常感謝 爲響應 - 我想使用持久性規範examples..in僞IAM做類似測試映射:

new PersistenceSpecification<Child>(_session, new CustomEqualityComparerChild()) 
    .CheckProperty(c => c.Name, "Child1Name") 
    --other Child prperties-- 
    .CheckReference(c => c.Employee, new Employee{ 
     Store = new Store{--store properties--}, 
      --other Employee Properties-- 
     }); 

外交鍵不應該有空的列被插入空值。我儘量使測試,以便按照正確的順序是創造了一切:

Store->Employee->Child 

..但我不

@Meckley好吧,這裏是真實的東西..「存儲」是「ReturnOrder」 「僱員」是「ReturnOrderLineItem」和「子女學費」是「ReturnOrderReplacementItem」 的類遵循「FirstExample」和映射的具體結構如下:

public ReturnOrderMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.OrderTrackingNumber); 
     Map(x => x.UserId); 

     HasMany(x => x.ReturnOrderLineItems).Inverse().Cascade.AllDeleteOrphan(); 
    } 

public ReturnOrderLineItemMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Sku); 
     Map(x => x.Status); 
     Map(x => x.Comments); 

     HasMany(x => x.ReturnOrderReplacementItems).Inverse().Cascade.AllDeleteOrphan(); 
     References(x => x.ReturnOrder); 
    } 

public ReturnOrderReplacementItemMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Quantity); 
     Map(x => x.Size); 
     References(x => x.ReturnOrderLineItem); 
    } 

我會跳過映射測試和試看看它是否真的有效,也許你不能測試一些東西像這樣與PesristenceSpecification ..

+0

員工與孩子之間的關係與店鋪與員工之間的關係無關。也就是說,將員工與孩子聯繫起來的機制,反之亦然。 到目前爲止您嘗試過哪些功能失敗? – 2011-12-22 13:24:26

+0

感謝您的迴應 - 我正在嘗試使用Persistent規範示例測試Maping .in僞代碼iam正在執行類似如下操作: – Nikos 2011-12-22 13:46:10

+0

請更新您的原始帖子,而不是將代碼輸入註釋。 – 2011-12-22 13:54:52

回答

0

OK,使其幹活提供一些細節的人遇到相同的任務:

1)爲EmployeeMap的範圍內的孩子應該 的hasMany的映射(X => X .Child).Cascade.AllDeleteOrphan(); (WITHOUT逆)

2)在子表允許FOREIGNKEY字段NULLS這樣一個子對象的該缺失是可行

3)第一保存存儲對象,將節省附加到它的僱員,然後將子對象添加到員工列表中

4)創建一個保存Empolyee實例的單獨方法,類似於保存Store實例的方法,該方法將保存添加到Employee對象的Child對象列表中的所有Child對象。