Asp.net NHibernate:Fluent中的映射不正确,在检索所有查询完成时导致结果重复
简言之:查询到parents表的结果parents+来自子级的记录。孩子们对父母有FKs,所以我有和孩子们的FKs数量一样多的复制品。 我正在ASP.NET MVC3项目中使用Fluent.NHibernate DB看起来像这样 型号: 映射: 查询:Asp.net NHibernate:Fluent中的映射不正确,在检索所有查询完成时导致结果重复,asp.net,nhibernate,mapping,duplicates,fluent-nhibernate-mapping,Asp.net,Nhibernate,Mapping,Duplicates,Fluent Nhibernate Mapping,简言之:查询到parents表的结果parents+来自子级的记录。孩子们对父母有FKs,所以我有和孩子们的FKs数量一样多的复制品。 我正在ASP.NET MVC3项目中使用Fluent.NHibernate DB看起来像这样 型号: 映射: 查询: 这对我来说似乎是不正确的,我不知道你为什么在你的孩子班上过度使用Id。您将如何为child.id返回parent.id 当然应该是这样 public int id { get; set;} 如果您确实需要这样做,那么您还需要在您的子类中重写以下
这对我来说似乎是不正确的,我不知道你为什么在你的孩子班上过度使用Id。您将如何为child.id返回parent.id 当然应该是这样
public int id { get; set;}
如果您确实需要这样做,那么您还需要在您的子类中重写以下内容,以便NHibernate知道什么是唯一的子记录
public override int GetHashCode()
override bool Equals(object obj)
有关更多信息,请参阅或
public class ParentMapper: ClassMap<Parent>
{
Table("parents");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.SystemName, "system_name").Not.Nullable();
}
public class ChildMapper: ClassMap<Child>
{
Table("children");
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.DisplayName, "display_name");
References(x => x.ParentId).Column("parent_id").Cascade.None().ForeignKey("FK_parent_id_to_id_in_parents");
}
using(ITransaction tr = session.BeginTransaction())
{
List<Parent> lp = new List<Parent>(session.CreateCriteria(typeof(Parent)).List<Parent>());
tr.Commit();
}
public override int Id
{
get
{
return base.Id;
}
set
{
base.Id = value;
}
}
public int id { get; set;}
public override int GetHashCode()
override bool Equals(object obj)