获取具有相同id但不同的子id nhibernate的相同实体

时间:2013-06-06 10:47:09

标签: c# nhibernate fluent-nhibernate

我在下面有一个关系。我的数据如下所示。

Id name Child_id
1  Mark   1
1  Mark   2

但是当我试图通过使用where传递Id 1来获得父亲时,它给了我两个结果两者完全相同,即使孩子也是一样的。

我在这里期待不同的孩子。

Class Parent 
{
int Id {get;set;}
string name {get;set;}
Child Child {get;set;}
}

Class Child
{
int Id {get;set;}
string name {get;set;}

}

1 个答案:

答案 0 :(得分:0)

我会称这些数据被破坏,因为它讲述了关于同一个对象(使用Id 1)

的不同事实

原因:

会话维护引用的真实性,因此当您从数据库收到相同的Id时,它将为您提供相同的引用。因此,当您获得上面的数据时,NHibernate会将第一个数据转换为Parent对象,而第二行则会看到相同的Id并返回相同的引用。

可能的修复:

  • 使用StatelessSession,然后按原样返回对象,不带referenceEuqality
  • 使数据返回更加清晰
  • 将QueryOver和resultTransformer或Linq直接用于Project对象(没有被跟踪的实体)