NHibernate似乎多次返回第一行的內容。與數據庫中實際不同的行數一樣多。例如,如果一個人有3點校區的隸屬關係是這樣的:NHibernate返回重複行
貝克學院 - 教師
科比小學 - 教師
俄亥俄州立大學 - 學生
NHibernate的將返回這樣的:
貝克學院 - 教師
貝克學院 - 教師
貝克學院 - 教師
我USI ng FluentNHibernate。下面是實體和映射文件的一些片段:
public class Person
{
public virtual string SysID { get; set; }
public virtual string FullName { get; set; }
public virtual ICollection<Campus> Campuses { get; set; }
}
public class Campus
{
public virtual string SysID { get; set; }
public virtual string Name { get; set; }
public virtual string Affiliation { get; set; }
}
public class PersonMapping
{
Table("Person");
Id(x => x.SysId);
Map(x => x.FullName).Column("FULL_NAME");
HasMany(x => x.Campuses).KeyColumn("SysId");
}
public class CampusMapping
{
Table("Campus");
Id(x => x.SysID);
Map(x => x.Name);
Map(x => x.Affiliation);
}
我通過校園迭代在我看來(MVC 3)所示:
@foreach(var campus in Model.Campuses)
{
@campus.Name @campus.Affiliation
}
我也嘗試添加該到實體以確保它不是一個愚蠢的錯誤與MVC或剃刀和有同樣的結果:
public virtual string campusesToString
{
get
{
string s = "";
for (int i = 0; i < Campuses.Count; i++)
{
s = s + Campuses.ElementAt(i).Name + " ";
}
return s;
}
}
最後,我查了一下,目前正在輸出的SQL,這是正確的,它的返回所有行聯合國不過...
+1我同意,我也覺得映射需要一個多到多映射,否則每個校區只能有一個人(因爲它看起來現在的外鍵列將在最終即使給出了一個與主鍵列不衝突的名字,校園表也是如此) – Yhrn 2011-02-23 16:04:26
是的,那也是我的想法。我會將其添加到答案中。 – 2011-02-23 16:07:14
這是校園關係。所以,在db中,它有一個識別人的sysid,一個識別人與校園的關係的領域,以及校園的名字。 (我沒有設計它)。 – 2011-02-23 16:20:46