C# nHibernate,如何查询具有多个关系的父对象

C# nHibernate,如何查询具有多个关系的父对象,c#,database,nhibernate,C#,Database,Nhibernate,我在两个对象之间有一个(实际上有几个)关系,父对象是一个用户,子对象是一个事件。 在用户和事件之间定义了四种关系: 事件的属性用户\uu创建的指创建事件的用户 属性修改了事件的用户\uuu 用户报告并最终 用户负责 事件的所有这四个属性都引用一个用户对象。如图中所示: <many-to-one name="User_created" class="User, WebbData" fetch="select"> <column name="created_by" not-

我在两个对象之间有一个(实际上有几个)关系,父对象是一个用户,子对象是一个事件。 在用户和事件之间定义了四种关系:

  • 事件的属性用户
    \uu
    创建的
    指创建事件的用户
  • 属性修改了事件的用户
    \uuu
  • 用户
    报告
    并最终
  • 用户
    负责
  • 事件的所有这四个属性都引用一个用户对象。如图中所示:

    <many-to-one name="User_created" class="User, WebbData" fetch="select">
        <column name="created_by" not-null="true" />
    </many-to-one>
    <many-to-one name="User_modified" class="User, WebbData" fetch="select">
            <column name="modified_by" not-null="false" />
    </many-to-one>
    <many-to-one name="User_reported" class="User, WebbData" fetch="select">
            <column name="reported_by" not-null="true" />
    </many-to-one>
    <many-to-one name="User_responsible" class="User, WebbData" fetch="select">
        <column name="responsible" not-null="false" />
    </many-to-one>
    
    
    
    我想写一个nHibernate表达式来获取特定用户创建的所有事件,但我不知道如何写这个表达式。。。 到目前为止,我得到的是:

     return session.CreateCriteria(typeof(Incident))
         .CreateCriteria("User")
             .Add(Expression.Eq("Id", UserID))
         .List<Incident>();
    
    返回会话.CreateCriteria(事件类型))
    .CreateCriteria(“用户”)
    .Add(Expression.Eq(“Id”,UserID))
    .List();
    

    但是,我该如何告诉nHibernate它应该使用用户
    \uuu
    创建的关系,而不是其他三个关系中的一个呢?

    我认为这是可行的,将ID直接分配给实体属性:

     return session.CreateCriteria(typeof(Incident))
         .Add(Expression.Eq("User_created", UserID))
         .List<Incident>();
    
    返回会话.CreateCriteria(事件类型))
    .Add(Expression.Eq(“User_created”,UserID))
    .List();
    
    它确实有效!太容易了,我几乎感到尴尬,我自己都没想到…:非常感谢!不客气。我总觉得把一个实体等同于这样的ID值是在作弊,但显然这是完全有效的。。。