实体我在订购商品上得到空引用。这是在第一次创建订单时发生的。我希望能够添加类似在我的订单中实例化一个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>
@frosty:这不是什么做与NHibernate。没有这条线,你会得到这个错误,无论是否与NH工作。 – UpTheCreek 2010-11-16 15:30:10
对不起,我应该提到,集是类型Iesi.Collections.Set。但我不能做以下 order.OrderItems = new Iesi.Collections.Set ();错误是“无法访问受保护的构造函数”Set“ –
frosty
2010-11-16 15:52:11
因为Iesi.Collections.Set是一个抽象类,您将需要使用其中一个实现,例如Iesi.Collections.HashedSet,Iesi.Collections.HybridSet,Iesi.Collections。 ListSet或Iesi.Collections.SortedSet – 2010-11-16 15:58:32