2010-11-16 63 views
1

實體我在訂購商品上得到空引用。這是在第一次創建訂單時發生的。我希望能夠添加類似在我的訂單中實例化一個nhibernate集合

order.OrderItems = new Iesi.Collections.Set<OrderItem>(); 

錯誤是「無法訪問受保護的構造‘設置’,這裏

public class Order 
    { 
     public virtual int Id { get; set; } 
     public virtual ISet<OrderItem> OrderItems { get; set; } 

     public virtual void AddOrderItem(OrderItem item) 
     { 
      item.Order = this; 
      // OrderItems below is null 
      OrderItems.Add(item); 
     } 

    } 


<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="EStore.Domain" 
        namespace="EStore.Domain.Model"> 

    <class name="Order" table="Orders"> 
    <id name="Id" type="Int32" column="Id" unsaved-value="0"> 
     <generator class="identity"/> 
    </id> 

    <property name="UserName" column="UserName"/> 
    <set name="OrderItems" table="OrderItems" generic="true" cascade="all-delete-orphan" inverse="true" > 
     <key column="OrderId" not-null="true" /> 
     <one-to-many class="EStore.Domain.Model.OrderItem, EStore.Domain" /> 
    </set> 

    </class> 
</hibernate-mapping> 

回答

2

作爲上面提到的A束

「由於Iesi.Collections.Set是一個抽象類,你將n eed使用其中一個實現,例如Iesi.Collections.HashedSet,Iesi.Collections.HybridSet,Iesi.Collections.ListSet或Iesi.Collections.SortedSet「

我更新了以下方法。關鍵部分是 「新HashedSet();」

public virtual void AddOrderItem(OrderItem item) 
    { 
     item.Order = this; 
     if (item.Order.OrderItems == null) 
     { 
      item.Order.OrderItems = new HashedSet<OrderItem>(); 
     } 
     OrderItems.Add(item); 
    } 
5

設置的OrderItems到一個新的列表在構造

public Order() { 
OrderItems = new List<OrderItem>(); 
} 
+0

@frosty:這不是什麼做與NHibernate。沒有這條線,你會得到這個錯誤,無論是否與NH工作。 – UpTheCreek 2010-11-16 15:30:10

+0

對不起,我應該提到,集是類型Iesi.Collections.Set。但我不能做以下 order.OrderItems = new Iesi.Collections.Set ();錯誤是「無法訪問受保護的構造函數」Set「 – frosty 2010-11-16 15:52:11

+3

因爲Iesi.Collections.Set是一個抽象類,您將需要使用其中一個實現,例如Iesi.Collections.HashedSet,Iesi.Collections.HybridSet,Iesi.Collections。 ListSet或Iesi.Collections.SortedSet – 2010-11-16 15:58:32

相關問題