Проблема сопоставления NHibernate - Не удалось инициализировать прокси - нет сеанса - PullRequest
0 голосов
/ 14 октября 2010

Я только начал изучать NHibernate и следую инструкциям.На моем собственном учебном проекте я создал проблему для себя.У меня есть две таблицы:

Team:
TeamId*
Name


Match:
MatchId*
TeamAId
TeamBId

Модельные объекты:

Команда

public virtual int? TeamId { get; private set; }
public virtual string Name { get; set; }
public virtual IList<Match> HomeMatches { get; set; }
public virtual IList<Match> AwayMatches { get; set; }

Совпадение

public virtual int? MatchId { get; private set; }
public virtual Team TeamA { get; set; }
public virtual Team TeamB { get; set; }

И это мое отображениедля команды:

    <property name="Name" type="string">
        <column name="Name" sql-type="nvarchar" not-null="true"/>
    </property>


    <bag name="HomeMatches" inverse="true" cascade="all-delete-orphan">
        <key column="TeamAId" />
        <one-to-many class="Match"/>
    </bag>

    <bag name="AwayMatches" inverse="true" cascade="all-delete-orphan">
        <key column="TeamBId" />
        <one-to-many class="Match"/>
    </bag>

И это для матча:

    <many-to-one name="TeamA" class="Team">
        <column name="TeamAId" sql-type="int" not-null="true" />
    </many-to-one>

    <many-to-one name="TeamB" class="Team">
        <column name="TeamBId" sql-type="int" not-null="true" />
    </many-to-one>

Полагаю, это неправильный способ сделать это, так как я получаю сообщение об ошибке: NHibernate.LazyInitializationException: Инициализация [MyProject.Domain.Entities.Team # 1] -Не удалось инициализировать прокси - нет сеанса.

  1. Что-то не так с моим отображением?
  2. Если нет, какие-либо предложения о том, как я могу обработать ошибку?

Спасибо.

1 Ответ

9 голосов
/ 14 октября 2010

Проблема не в вашем отображении, а в обработке вашего сеанса.

Вы закрываете сеанс и затем пытаетесь получить доступ к лениво загруженному свойству (команде).

...