У меня есть объект Vessel, который имеет отношение один ко многим с
VesselDetail объект. Когда я добавляю объект VesselDetail к объекту Vessel и пытаюсь сохранить объект Vessel, кажется, что NHibernate не добавляет внешний ключ при вставке объекта VesselDetail.
Где я здесь не так? Я просто не могу понять это.
Сообщение об ошибке:
BDN.FindVessel.Tests.Integration.NhibernateRepositoryTests.SaveVessel_ShouldAddDetailsToDb_WhenAddedToEntity:
NHibernate.Exceptions.GenericADOException: не удалось вставить: [BDN.FindVessel.Domain.VesselDetail] [SQL: INSERT INTO BoatsDetails (SaftyGear, OtherMachineryAndGear, Материал, Размер, Различный, TranslatorId, SpeenAndConsitation, Основное, Класс, Учебное заведение, Учреждение) Интерьер, электроника, DeckGear) ЗНАЧЕНИЯ (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?); выберите SCOPE_IDENTITY ()]
----> System.Data.SqlClient.SqlException: невозможно вставить значение NULL в столбец «BoatId», таблица «FindVesselTest.dbo.BoatsDetails»; столбец не допускает пустых значений. Вставить не удается.
Заявление было прекращено.
public class Vessel
{
public virtual int BoatId { get; set; }
public virtual IList<VesselDetail> Details { get; set; }
//...
}
public class VesselDetail
{
public virtual int VesselDetailId { get; set; }
//some other properties
//..
}
public class VesselMap: ClassMap<Vessel>
{
public VesselMap()
{
WithTable("Boats");
Id(x => x.BoatId, "Id");
//..
HasMany(x => x.Details)
.WithKeyColumn("BoatId") //foreign key in the BoatsDetails table
.Cascade.All();
}
}
public class VesselDetailMap:ClassMap<VesselDetail>
{
public VesselDetailMap()
{
WithTable("BoatsDetails");
Id(x => x.VesselDetailId, "Id");
//...
}
}