NHibernate映射问题 - 无法初始化代理 - 没有会话

时间:2010-10-14 14:07:41

标签: nhibernate proxy nhibernate-mapping

我刚刚开始学习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. 如果没有,有关如何处理错误的任何建议吗?
  3. 感谢。

1 个答案:

答案 0 :(得分:9)

问题不在于您的映射,而在于您的会话处理。

您正在关闭会话,然后尝试访问延迟加载的属性(团队)。