Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate-延迟加载的集合_Nhibernate_Lazy Loading - Fatal编程技术网

NHibernate-延迟加载的集合

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

NHibernate中的延迟加载集合是否应该给我一个NullReferenceException?我在如下方法中遇到异常:

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()时会发生什么?我猜也是,但我不知道你是如何实现的。