У меня есть две организации: Клиент и Учетная запись. У Клиента много аккаунтов.
Мое сопоставление для Клиента:
<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>
В моем приложении я получаю клиента по его идентификатору:
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 ();" чтобы добиться успеха, хотя
У кого-нибудь есть идеи, что здесь происходит?