NHibernate Родитель / Детское отношение - PullRequest
1 голос
/ 05 января 2010

У меня есть следующие настройки:

public class ParentEntity
{
   public ICollection<ChildEntity> {get; set; }
}

public class ChildEntity
{
   // do i need to the parent here?
}

Мне удалось сохранить ParentEntity и каскадно сохранил добавленные дочерние объекты, которые также были сохранены. Но в таблице базы данных ссылка ParentId на ребенка была установлена ​​для разрешения NULL. При установке значения NOT NULL сохранение завершается неудачно, поскольку ParentId в дочерней таблице равен NULL.

Что там происходит? ;)

Когда

Ответы [ 2 ]

1 голос
/ 05 января 2010

Вы должны нормально отобразить обе стороны отношений, и когда вы добавляете дочерний элемент в коллекцию родителя, вы также должны установить родительское свойство для дочернего элемента.Обычно этого можно достичь, написав такой метод:

public void AddChild(ChildEntity child)
{
   this.Children.Add(child);
   child.Parent = this;
}

NHibernate сохраняет столбец ParentId в таблице Child на основе сопоставленного свойства в классе ChildEntity.Определение отношения «один ко многим» просто позволяет NHibernate загружать коллекцию из базы данных на основе значений в этом столбце

0 голосов
/ 06 января 2010

У меня та же проблема, и мне нужно, чтобы nHibernate выставлял столбец внешнего ключа или делал это в классе через коллекцию.

Проблема: nHibernate создает объект коллекции (например, IList), и вы не можете переопределить или прослушать события добавления базовых коллекций.

Это становится проблемой только потому, что это требуется инфраструктурой WCF RIA Services.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...