2012-02-02 26 views
12

लिए कई मैं दो वर्गों आदेश और आइटमधाराप्रवाह NHibernate कई मानचित्रण रास्ता

मैं चाहता हूँ इस

class Order 
{ 
    public virtual IList<Item> GetItems(Order order) 
    { 
     //get items for that order. 
    } 
} 
class Item 
{ 
    public virtual IList<Order> GetOrders(Item item) 
    { 
     //get all the orders in which that items is present. 
    } 
} 

की तरह एक विधि यह इस तरह एक विधि बनाने के लिए लिखना है या बजाय मैं एक संपत्ति बनाने चाहिए है

 public virtual IList<Item> Items { get; set; } 

और इसके लिए मैपिंग कैसे मुझे निबर्नेट करना चाहिए ??

उत्तर

29

स्पष्ट रूप से आपके पास कई से अधिक रिश्ते हैं: एक आदेश में कई आइटम हो सकते हैं और एक आइटम कई ऑर्डर से संबंधित हो सकता है। एक रिलेशनल डेटाबेस में आपको इसे एक अलग टेबल के साथ व्यक्त करने की आवश्यकता है जो मुझे लगता है कि - आपको लगता है कि इस तालिका को OrdersItems कहा जाता है।

class Order 
{ 
    public virtual IList<Item> Items { get; protected set; } 
} 

class Item 
{ 
    public virtual IList<Order> Orders { get; protected set; } 
} 

और मैपिंग:

public class OrderMap : ClassMap<Order> 
{ 
    public OrderMap() 
    { 
     HasManyToMany(x => x.Items) 
      .Cascade.All() 
      .Table("OrdersItems"); 
    } 
} 

public class ItemMap : ClassMap<Item> 
{ 
    public ItemMap() 
    { 
     HasManyToMany(x => x.Orders) 
      .Cascade.All() 
      .Inverse() 
      .Table("OrdersItems"); 
    } 
} 
+0

मैं याद आ रही थी

आप एक Order में एक Items संपत्ति और Item में एक Orders संपत्ति बन जाएगा Fluent NHibernate documentation से स्टोर/उत्पाद उदाहरण के बाद

"उलटा()", भविष्य के संदर्भ के लिए, यदि कोई इसका उपयोग नहीं करता है, तो तालिका "ऑर्डर इटम्स" एक डबल रजिस्ट्री बनाती है। – Nuno

संबंधित मुद्दे