NHibernate-延迟加载的集合
NHibernate中的延迟加载集合是否应该给我一个NullReferenceException?我在如下方法中遇到异常:NHibernate-延迟加载的集合,nhibernate,lazy-loading,Nhibernate,Lazy Loading,NHibernate中的延迟加载集合是否应该给我一个NullReferenceException?我在如下方法中遇到异常: public void Test(ISession session, int id) { var entity = session.Load<MyEntity>(id); entity.LazyLoadedCollection.Add(SomeItem); } 公共无效测试(ISession会话,int-id) { var entity=ses
public void Test(ISession session, int id)
{
var entity = session.Load<MyEntity>(id);
entity.LazyLoadedCollection.Add(SomeItem);
}
公共无效测试(ISession会话,int-id)
{
var entity=session.Load(id);
entity.LazyLoadedCollection.Add(SomeItem);
}
正在抛出对LazyLoadedCollection的调用。我的映射看起来像:
<bag lazy="true" table="MyTable">
<key>
<column name="LazyLoadedCollection" />
</key>
<many-to-many class="LazyLoadedItem">
<column name="LazyLoadedItemId" />
</many-to-many>
</bag>
这是NHibernate的预期行为吗?不,不是。这不是在网上提问的好方法
如果你不发布引发异常的代码并告诉我们异常来自何处,那么你真的不可能告诉你该怎么做。不看你的类很难说,但有一件事你可能没有意识到,那就是你需要在类的构造函数中填充每个集合
NHibernate会在某些时候用自己的集合替换这些集合,但是您仍然需要确保它们最初是用
哈希集
、列表
,或者其他一些东西填充的,具体取决于您使用的接口。正如我在文章中所说的,调用entity.LazyLoadedCollection.Add会出现异常。我真的不明白为什么异常后面的代码很重要。我得到一个实体实例,调用Session.Load,并尝试将一个对象添加到它的属性中,该属性是一个延迟加载的集合。你能告诉我哪部分不清楚吗?实体类中的代码。我确信异常不是由NHibernate引起的,而是由我在您的代码示例中没有看到的其他原因引起的。当您在不映射或引用NHibernate的情况下新建Entity().LazyLoadedCollection.Add()时会发生什么?我猜也是,但我不知道你是如何实现的。