C# Nhibernate一对多标准

C# Nhibernate一对多标准,c#,.net,sql,nhibernate,C#,.net,Sql,Nhibernate,我有一个类,它包含一个关联对象的列表 我将其映射如下: <class name="MyDto" table="`MyView`" mutable="false" lazy="false"> <id name="Id" column="ID" type="int"> <generator class="assigned" /> </id> <set name="Days" cascade="all-d

我有一个类,它包含一个关联对象的列表

我将其映射如下:

<class name="MyDto" table="`MyView`" mutable="false"  lazy="false">
    <id name="Id" column="ID" type="int">
        <generator class="assigned" />
    </id>

    <set name="Days" cascade="all-delete-orphan" lazy="false" >
          <key column="Id" />
          <one-to-many class="MyAssociatedObj"/>
    </set>
</class>

<class name="MyAssociatedObj" table="V_SC_NEED" mutable="false" lazy="false" >
    <id name="Id"  column="`ID2`" type="int">
        <generator class="assigned" />
    </id>

    <property type="DateTime" not-null="true" name="DayDate"  column="`Date`" />

    <component name="Audit">
        <property type="string" not-null="true" length="255" name="Username" column="`USERNAME`" />
        <property type="decimal" not-null="true" name="PreviousValue" column="`PrevVal`" />
    </component>
</class>

我想做的是得到一个MyDto对象的列表,通过我的关联对象MyAssociatedObject进行过滤

这意味着,例如,如果我这样做:

UnitOfWork.Session.CreateCriteria<MyDto>().List<MyDto>()
UnitOfWork.Session.CreateCriteria().List()
我得到了42行的列表。 现在,我想通过我的关联对象过滤它们,限制在两者之间。 问题是,当我这样做时:

UnitOfWork.Session.CreateCriteria<MyDto>().CreateAlias("Days", "days").Add(Restrictions.Between("days.DayDate", query.FromDate, query.ToDate));
UnitOfWork.Session.CreateCriteria().CreateAlias(“天”,“天”).Add(Restrictions.Between(“Days.DayDate”,query.FromDate,query.ToDate));
我有684排!(一些卡特尔产品或其他东西)

有什么建议吗?
非常感谢

在第二个查询中,您将获得更多行,因为您将加入
MyAssociatedObj
,它似乎与您的
MyDTO
类存在多对一关系。
如果要筛选出重复的
MyDTO
,可以使用distinctroutresulttransformer:

UnitOfWork.Session.CreateCriteria<MyDto>().CreateAlias("Days", "days")  
   .Add(Restrictions.Between("days.DayDate", query.FromDate, query.ToDate))  
   .SetResultTransformer(  
          new NHibernate.Transform.DistinctRootEntityResultTransformer());  
UnitOfWork.Session.CreateCriteria().CreateAlias(“天”,“天”)
.Add(限制.Between(“days.DayDate”,query.FromDate,query.ToDate))
.SetResultTransformer(
新的NHibernate.Transform.DistincTrotentyResultTransformer());

希望有帮助。

你能把你的MyDto的equals方法发布到网上吗?