2010-03-16 26 views
16

ekstra sütun ile haritalama olan tablolar ı vardır:Akıcı Nhibernate Birçok-çok bu kullanarak akıcı NHibernate gibi fiil eşlemek istiyorum ama envanter tablosu</p> <p>Bu harita nasıl emin değilim

Ürün (İd, Ad ...)

Depo (İd, Ad ...)

Envanteri (product_id, Warehouse_id, StockInHand)

Ben

{ 
     Id(x => x.Id); 
     Map(x => x.Name);  
     HasManyToMany(x => x.Products) 
     .Cascade.All() 
     .Table("Inventory"); 

    } 

ben karşıya sorun nasıl olduğunu

Kamu ProductMap() {

 Id(x => x.Id); 
     Map(x => x.Name); 

     HasManyToMany(x => x.StoresStockedIn) 
     .Cascade.All() 
     .Inverse() 
     .Table("Inventory"); 

    } 

kamu WarehouseMap() aşağıda gibi Ürünü ve Depo harita var StockInHand'ı nasıl haritalandırabilirim (envanter modeli haritalaması nasıl yapılmalı?).

veya bu senaryoyu modellemek için başka bir yol var mı?

Bazı mevcut soruları okudum ama henüz net ne yapacağını anlamaya alamadım.

Teşekkür

cevap

20

ilişkiniz bir sayıda çoğa kadarıyla NHibernate söz konusu olduğunda değil. Çoktan çoğa doğru, örneğinizde StockInHand gibi ek sütunlar yoktur.

iki bire-çok ilişkileri olarak bu harita ve bir varlık olarak Envanteri haritası gerekiyor.

gibi

şey (i diğer özellikleri atlanır ettik): Ben burada eşleştirmeleri izlediyseniz, ama bu işe alınamıyor

public class Product 
{ 
    public List<Inventory> Inventory { get; set; } 
} 

public class Warehouse 
{ 
    public List<Inventory> Inventory { get; set; } 
} 

public class Inventory 
{ 
    public Product Product { get; set; } 
    public Warehouse Warehouse { get; set; } 
    public bool StockInHand { get; set; } 
} 

public ProductMap() { 
    Id(x => x.Id); 
    Map(x => x.Name); 
    HasMany(x => x.Inventory) 
    .Cascade.All() 
    .Inverse() 
    .Table("Inventory"); 
} 

public WarehouseMap() 
{ 
    Id(x => x.Id); 
    Map(x => x.Name);  
    HasMany(x => x.Inventory) 
    .Cascade.All() 
    .Inverse() 
    .Table("Inventory"); 
} 

public InventoryMap() 
{ 
    CompositeId() 
     .KeyReference(x => x.Product, "Product_id") 
     .KeyReference(x => x.Warehouse, "Warehouse_id") 

    Map(x => x.StockInHand); 
} 
+0

... Bu doğru kurtarmak görünmüyor. Bu konuda bir soru yazdım [burada] (http://stackoverflow.com/questions/16201439/fluent-nhibernate-many-to-many-with-extra-column-does-not-insert) – 0909EM

İlgili konular