C# NHIbernate 1.2和延迟加载

C# NHIbernate 1.2和延迟加载,c#,nhibernate,loading,lazy-evaluation,cartesian,C#,Nhibernate,Loading,Lazy Evaluation,Cartesian,有一个不寻常的问题-我肯定我错过了一些非常简单的现在! 特别是有两个表: <class name="Proposal" table="Proposal"> <id name="Id" column="ProposalId"> <generator class="identity" /> </id> <property name="QuotationNumber" column="Q

有一个不寻常的问题-我肯定我错过了一些非常简单的现在! 特别是有两个表:

   <class name="Proposal" table="Proposal">
      <id name="Id" column="ProposalId">
         <generator class="identity" />
      </id>

      <property name="QuotationNumber" column="QuotationNumber" access="nosetter.camelcase-underscore" />

      <set name="DataItems" table="ProposalData" inverse="true" cascade="save-update" access="nosetter.camelcase-underscore" lazy="true">
         <key column="ProposalId" />
         <one-to-many class="Fortron.Fastr.Domain.Proposal.ProposalData, Fortron.Fastr.Domain"/>
      </set>
   </class>
除非我疯了,因为提案是一对多的ProposalData,NH应该加载每个提案对象,并将每个对象的数据作为一个集合。 不幸的是,我最终得到了重复的结果,因为每个提案都有多个ProposalData

我的理解是这不应该是个问题。如果ProposalData与另一个表有一对多关系,则会产生笛卡尔积,并且可以预期上述结果

我错了吗?有人能解释一下吗


谢谢。

JOIN-FETCH
表示项目已加入并用于获取它们。这导致提案成倍增加。注意:重复项在内存中仍然是相同的实例


使用
distinctroutentitytransformer
或避免
join fetch

ahhhhh!提案返回了许多结果,每个提案的ProposalData也是如此,因此产生了笛卡尔积,导致NH像我上面所经历的那样加载数据。嗨,Stefan-FETCH基本上是急切地加载ProposalData,对吗?在这种情况下,是否有一种方法可以打印提案,而不必点击数据库检索每个提案数据?谢谢。但是,如果我避免加入获取,我将无法检索与提案关联的ProposalData项?(至少不是迫不及待地?)
   <class name="ProposalData" table="ProposalData">
      <id name="Id" column="ProposalDataId">
         <generator class="identity" />
      </id>
      <many-to-one name="Proposal" column="ProposalId" class="Fortron.Fastr.Domain.Proposal.Proposal, Fortron.Fastr.Domain" />

   </class>
  FROM Proposal MSP
  JOIN FETCH MSP.DataItems Items