我有两个实体,客户和帐户。客户拥有多个帐户。NHibernate - 非法访问加载集合
我对客户的映射是:
<bag cascade="all" name="Accounts" table ="Accounts" mutable="true" inverse="true">
<key>
<column name="Customer_Id" />
</key>
<one-to-many class="Account, POCOEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
我的帐号映射:
<many-to-one cascade="all" class="Customer, POCOEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Customer">
<column name="Customer_Id" />
</many-to-one>
在我的申请,我检索客户根据自己的ID:
var customer = _customerRepository.GetById(custID);
然后我尝试让客户的第一个帐户:
Account account = customer.Accounts.FirstOrDefault();
然后我收到以下异常:“NHibernate.LazyInitializationException:非法获取装填回收”
我试过其他的方案来解决这个问题张贴在这里,但没有什么工作。请告诉我非常奇怪的是,如果我插入下面的代码之前我尝试访问该帐户,然后一切正常:
var acc = from a in _accountRepository.GetAll()
where a.Customer.Equals(customer)
select a;
所有我已经在前面的代码做的是创造,我甚至不使用的变量。不知何故,它会导致声明“帐户帐户= customer.Accounts.FirstOrDefault();”尽管如此。
任何人有任何想法这里发生了什么?
您是否尝试删除“可变”属性? – mathieu 2011-04-01 12:11:33