C# nHibernate返回两倍的记录数

C# nHibernate返回两倍的记录数,c#,linq,nhibernate,C#,Linq,Nhibernate,我的查询返回的行数是预期的两倍。当我查看nHibernate探查器时,我看到了我期望的查询,但它在探查器中出现了两次 映射: 一个位置有许多LocationRoom,这些LocationRoom具有许多LocationRoom布局: 位置 public LocationMap() { Id(x => x.locationID).Column("ID"); HasMany(x => x.LocationRooms) .KeyColumn("LID")

我的查询返回的行数是预期的两倍。当我查看nHibernate探查器时,我看到了我期望的查询,但它在探查器中出现了两次

映射:

一个位置有许多LocationRoom,这些LocationRoom具有许多LocationRoom布局:

位置

 public LocationMap()
 {
    Id(x => x.locationID).Column("ID");

    HasMany(x => x.LocationRooms)
       .KeyColumn("LID") 
       .Not.LazyLoad().Cascade.All();
 }
定位室

 public LocationRoomMap ()
 {
      References(x => x.Location).Column("LID");
      HasMany(x => x.LocationRoomLayouts)
          .KeyColumn("RID")
          .Not.LazyLoad().Cascade.All();
 }
位置室布局

 public LocationRoomLayoutMap()
 {
       References(x => x.LocationRoom).Column("RID");
 }
返回双倍行的查询:

 var locations = session.CreateCriteria<LocationRoomLayout>("p")
                        .Add(Restrictions.Eq("CostPerHour", 0))
                        .Add(Restrictions.Eq("CostPerDay", 0))
                        .Add(Restrictions.Eq("CostPerHalfDay", 0))
                        .Add(Restrictions.Eq("CostPerPerson", 0))
                         .List<LocationRoomLayout>();
var locations=session.CreateCriteria(“p”)
.Add(限制条件Eq(“每小时成本”,0))
.Add(限制条件Eq(“每日成本”,0))
.Add(Restrictions.Eq(“CostPerHalfDay”,0))
.Add(限制条件Eq(“CostPerPerson”,0))
.List();

NHibernate使用从数据库检索的结果集来构建实体。 由于实体由来自不同表的数据组成,因此数据库会多次从“主”表返回相同的记录

因此,将返回多个实体。 使用DistincTrotentyTransformer确保NHibernate只返回不同的实体


可以找到更多信息

我尝试添加.SetResultTransformer(新的DistinctRootEntityResultTransformer()),得到了完全相同的结果。。。我相信这是一个不同的问题,因为在nHibernateProfiler中生成的SQL是完美的,它只执行了两次