NHibernate возвращает содержимое первой строки несколько раз.Столько раз, сколько фактических, отдельных строк в базе данных.Например, если у одного человека есть 3 филиала в кампусе, например:
Бейкер-колледж - учитель
Брайант Элементар - учитель
Университет штата Огайо - студент
NHibernate вернет его так:
Бейкер-колледж - учитель
Бейкер-колледж - учитель
Бейкер-колледж - учитель
Я использую 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 или Razor и что результат тот же:
public virtual string campusesToString
{
get
{
string s = "";
for (int i = 0; i < Campuses.Count; i++)
{
s = s + Campuses.ElementAt(i).Name + " ";
}
return s;
}
}
Наконец, я проверил SQL, который выводился, и он правильный, и этовозвращая все строки однозначно ...