Свободное владение nHibernate: проблема взаимоотношений один-ко-многим
У меня проблема с отношениями один-ко-многим. У меня есть следующие классы домена:
public class Installation : Entity
{
public virtual string Name { get; set; }
public virtual IList Institutions { get; set; }
public Installation()
{
Institutions = new List();
}
}
public class Institution : Entity
{
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual Installation Installation { get; set; }
}
Я сделал базовый класс Entity в соответствии со следующимсообщение, У меня определены следующие сопоставления:
public class InstitutionMapping : ClassMap
{
public InstitutionMapping()
{
WithTable("Institution");
Id(i => i.Id).GeneratedBy.Guid();
Map(i => i.Name).Not.Nullable().WithLengthOf(50);
Map(i => i.Address).Not.Nullable().WithLengthOf(50);
Map(i => i.City).Not.Nullable().WithLengthOf(50);
References(i => i.Installation).ColumnName("InstallationId").Not.Nullable().WithForeignKey();
}
}
public class InstallationMapping : ClassMap
{
public InstallationMapping()
{
WithTable("Installation");
Id(i => i.Id).GeneratedBy.Guid();
Map(i => i.Name).Not.Nullable().WithLengthOf(50);
HasMany(i => i.Institutions).KeyColumnNames.Add("InstallationId").Inverse().Cascade.All();
}
}
Я тестирую модуль, добавляя учреждения к установке следующим образом:
Installation installation = TestHelper.CreateAnonymousInstallation();
installation.Institutions.Add(TestHelper.CreateAnonymousInstitution());
installation.Institutions.Add(TestHelper.CreateAnonymousInstitution());
session.Save(installation);
session.Flush();
session.Clear();
Installation returnedInstallation = session.Get(installation.Id);
Assert.AreEqual(2, returnedInstallation.Institutions.Count);
Я получаю исключение утверждения, потому что возвращаемое число учреждений равно 0. Я проверил в SQL Profiler, и учреждения сохраняются в базе данных, но их InstallationId равен нулю. Может кто-нибудь сказать мне, что я делаю не так?