0

ProductOrder と Product などの 2 つのオブジェクトがある場合、両方に他方への複数の参照を含めることができるようにする必要があります。

Product は複数の Order で参照できます ProductOrder には複数の Products を含めることができます。

私はそれをそのようにしようとしました...

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

期待どおりに機能させることができません。助言がありますか?

4

2 に答える 2

0

IMHO、 Product.Orders 関係をマッピングするべきではありません。一般に、データベースから大規模なコレクションをプルする可能性のあるドメイン オブジェクトに、潜在的に大規模なコレクションをマップすることは望ましくありません。

注文が大きくなり始めると、パフォーマンスの問題が発生し始めます。

于 2009-03-23T11:34:27.117 に答える