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值是在作弊,但显然这是完全有效的。。。