在Nhibernate中使用IList不会初始化

在Nhibernate中使用IList不会初始化,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我基本上有: Public Class Job: MyBaseClass { public virtual string JobInformation {get;set;} ... public virtual List<Item> JobItems {get;set;} } 公共类作业:MyBaseClass { 公共虚拟字符串JobInformation{get;set;} ... 公共虚拟列表作业项{get;set;} } 我正在使用一个列表并在构造

我基本上有:

Public Class Job: MyBaseClass
{
    public virtual string JobInformation {get;set;}
    ...
    public virtual List<Item> JobItems {get;set;}
}
公共类作业:MyBaseClass
{
公共虚拟字符串JobInformation{get;set;}
...
公共虚拟列表作业项{get;set;}
}
我正在使用一个列表并在构造函数中初始化它(JobItems=new List();)。但是,我遇到了一个异常(Nhibernate.Collection.Generic.PersistentGenericBag)

我读了,它说我应该使用IList

所以现在我有了

public class Job: MyBaseClass
{
    public virtual string JobInformation {get;set;}
    ...
    public virtual IList<Item> JobItems {get;set;}
}

public virtual void AddItem(Item item)
{
     //snip validation
     this.JobItems.Add(item);
}
公共类作业:MyBaseClass
{
公共虚拟字符串JobInformation{get;set;}
...
公共虚拟IList作业项{get;set;}
}
公共虚拟无效附加项(项)
{
//剪报验证
this.jobbitems.Add(item);
}

但是,它会抛出NullReferenceException,因为JobItems尚未初始化。NHibernate何时初始化此集合?或者如何解决此问题?

如果以前未初始化集合,则应初始化集合

private IList<Item> _jobItems;
public IList<Item> JobItems
{
    get
    {
        return _jobItems ?? (_jobItems = new List<Item>());
    }
    private set
    {
        _jobItems = value;
    }
}
private IList\u作业项;
公共物品
{
收到
{
返回_jobItems???(_jobItems=newlist());
}
专用设备
{
_作业项=价值;
}
}

如果以前未初始化集合,则应初始化该集合

private IList<Item> _jobItems;
public IList<Item> JobItems
{
    get
    {
        return _jobItems ?? (_jobItems = new List<Item>());
    }
    private set
    {
        _jobItems = value;
    }
}
private IList\u作业项;
公共物品
{
收到
{
返回_jobItems???(_jobItems=newlist());
}
专用设备
{
_作业项=价值;
}
}

使用支持字段,返回时确保它不为空

public IList<Item> JobItems
{
    get { return _jobItems ?? (_jobItems = new List<Item>()); }
    set { _jobItems = value; }
}
公共IList作业项
{
获取{return}jobItems???(_jobItems=new List());}
设置{u jobItems=value;}
}

使用支持字段,返回时确保它不为空

public IList<Item> JobItems
{
    get { return _jobItems ?? (_jobItems = new List<Item>()); }
    set { _jobItems = value; }
}
公共IList作业项
{
获取{return}jobItems???(_jobItems=new List());}
设置{u jobItems=value;}
}

如果我像这样在构造函数中初始化此集合,是否有任何特定原因导致此操作不起作用
JobItems=new List()
如果我像这样在构造函数中初始化此集合,是否有任何特定原因导致此操作不起作用
JobItems=new List()