Я не могу понять, почему NHibernate вставляет дочернюю сущность без внешнего ключа родителя.
Единственный способ, который я нашел, чтобы решить эту проблему - это двунаправленные отношения, есть ли другой способ?
Вот классы:
public class Parent
{
public virtual int ParentId {get; private set;}
public virtual IList<Child> Notes {get; private set;}
}
public class Child
{
public virtual ChildId {get; private set;}
public virtual Name {get; private set;}
}
Вот мое свободное отображение NHibernate
public class ParentClassMap : ClassMap<Parent>
{
public ParentClassMap(){
Id(x => x.ParentId);
HasMany(x => x.Notes).Cascade.AllDeleteOrphan();
}
}
public class ChildClassMap : ClassMap<Child>
{
public ChildClassMap() {
Id(x => x.ChildId);
Map(x => x.Name);
}
}
Когда я добавляю дочерний элемент в дочернюю коллекцию родителя и сохраняю родительский элемент, родительский элемент и дочерний элемент вставляются в базу данных, но дочерний элемент вставляется без внешнего ключа для родительского элемента (он имеет нулевое значение)
Это сгенерированная вставка:
INSERT INTO Child(ChildId, Name)
Но это должно быть:
INSERT INTO Child(ChildId, Name, ParentId)
Я хочу добавить, что я не хочу разрешать это с помощью двунаправленных отношений, я не хочу, чтобы у ребенка была ссылка на родителя. Спасибо !!