我有兩個實體,客戶和帳戶。客戶擁有多個帳戶。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