2009-03-23 13 views
0

Wenn ich zwei Objekte, ProductOrder und Product, habe, möchte ich, dass beide mehrere Referenzen auf die andere enthalten können, z.bidirektionale Eins-zu-Viele-Entitätsassoziation

Ein Produkt kann durch mehrere Bestellungen referenziert werden Eine ProductOrder kann mehrere Produkte enthalten.

ich versucht habe es als solches zu tun ...

<set name="Products" inverse ="true" cascade="save-update"> 
     <key column="OrderID"/> 
     <one-to-many class="Product"/> 
    </set> 

public class ProductOrder 
{ 
    private ISet<Product> products = new HashedSet<Product>(); 

    public virtual int ID { get; set; } 
    public virtual Customer Customer { get; set; } 
    public virtual int NumberOfProducts { get; set; } 
    public virtual decimal TotalCost { get; set; } 
    public virtual void AddProduct (Product product) 
    { 
     products.Add(product); 
    } 
    public virtual ISet<Product> Products 
    { 
     get { return this.products; } 
     set { this.products = value; } 
    }   
} 


<set name="Orders" lazy="true" table="ProductOrders"> 
    <key column="ProductID"/> 
    <one-to-many class="ProductOrder"/> 
</set> 


public class Product 
{ 
    //public virtual Guid Id { get; set; } //Could use Guid, though it's not really readable and harder to find reference in the DB 

    private ISet<ProductOrder> orders = new HashedSet<ProductOrder>(); 

    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual string Category { get; set; } 
    public virtual int Count { get; set; } 
    public virtual bool Discontinued { get; set; } 
    public virtual void AddOrder(ProductOrder order) 
    { 
     orders.Add(order); 
    } 
    public virtual ISet<ProductOrder> Orders 
    { 
     get { return this.orders; } 
     set { this.orders = value; } 
    } 
} 

Ich kann einfach nicht schaffen es zum Laufen zu bringen, wie ich es erwarten würde. irgendwelche Vorschläge?

Antwort

0

IMHO, sollten Sie nicht zuordnen Product.Orders Beziehung. Im Allgemeinen möchten Sie möglicherweise keine großen Sammlungen in einem Domänenobjekt zuordnen, die eine große Sammlung aus der Datenbank abrufen könnten.

Wenn Ihre Bestellungen zu groß werden, werden Sie mit Leistungsproblemen konfrontiert.