顧客とアカウントの2つのエンティティがあります。顧客は多くのアカウントを持っています。
顧客のマッピングは次のとおりです。
<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;
前のコードで行ったのは、使用すらしない変数を作成することだけです。どういうわけか、「Account account = customer.Accounts.FirstOrDefault();」というステートメントが発生します。しかし成功するために。
誰かがここで何が起こっているのか考えがありますか?