NHibernate包始终为空

NHibernate包始终为空,nhibernate,mapping,Nhibernate,Mapping,我已经按照许多文章的建议设置了映射文件和类 class A { ... IList BBag {get;set;} ... } class B { ... A aObject {get;set;} ... } <class name="A">...<bag name="BBag" table="B" inverse="true" lazy="false"><key column="A_ID" /><one-to-many class="B" />

我已经按照许多文章的建议设置了映射文件和类

class A { ... IList BBag {get;set;} ... }

class B { ... A aObject {get;set;} ... }

<class name="A">...<bag name="BBag" table="B" inverse="true" lazy="false"><key column="A_ID" /><one-to-many class="B" /></bag>...

<class name="B">...<many-to-one name="aObject" class="A" column="A_ID" />...
class A{…IList BBag{get;set;}…}
类B{…A AOObject{get;set;}…}
......
......
我在a表中添加了一组a,在B表中添加了一组B,所有数据都被存储 正如所料。但是,如果我尝试访问
aInstance.BBag.Count
我会得到一个空引用异常。我想我遗漏了一些关于如何实例化包的关键知识。
谢谢

我做了
一个pository.Update(BOject)当您调用Save()/SaveOrUpdate()/update()时,保存对象的集合将不会被实例化/分解

因此,如果需要集合元素,则必须再次选择对象。
如果您不想这样做,您可以创建已保存集合对象的集合,并将它们分配给已保存对象的集合属性。

我今天已经进行了进一步的实验,您似乎需要再次检索实体,以便检索关系中的集合。我在一个helper类中有一组静态实体,用于单元测试,我正在更新表B,并尝试从类a访问B的集合,而不从数据库中选择a,即helper.oAObject.BCollection,它总是为空。但是,oAObject=ARepo.GetById(Helper.oAObject.Id)和集合将可用,即使没有更新表A。您所说的是正确的,请再次选择object。根据您所说的,您正在犯一个逻辑错误:B对象的b集合与更新表A无关。将集合看作是一个方便的工具,用于获取与此对象相关(如外键)的对象。