2009-03-23 2 views
0

두 개의 객체가있는 경우 ProductOrder 및 Product라고하면 둘 다 다른 객체에 대한 참조를 여러 개 포함 할 수 있습니다.양방향 일대 다 엔티티 어소시에이션

A 복수 주문을 통해 제품을 참조 할 수 있습니다. ProductOrder에는 여러 제품이 포함될 수 있습니다. 나는 그것에을 예상대로

내가 같은 그것을 시도했습니다 ...

<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; } 
    } 
} 

난 그냥 관리 할 수있는 것은이 작업하세요. 어떤 제안?

답변

0

IMHO, 당신은 Product.Orders 관계를 매핑하면 안됩니다. 일반적으로 대규모 컬렉션을 데이터베이스에서 가져올 수있는 도메인 개체에 매핑하지 않으려합니다.

주문이 커지기 시작하면 성능 문제가 발생하기 시작합니다.