У меня типичные родитель / ребенок отношения. Написание новостей в .NET
и добавление детей работает нормально, NHibernate
играет хорошо и добавляет правильные отношения.
Однако при передаче JSON object
от клиента в какой-либо метод, который сериализует мой JSON в представление .NET, NHibernate, похоже, запутывается. Он предлагает правильный запрос для добавления родителя (и назначает новый идентификатор для Id), однако он не связывает этот родительский идентификатор с дочерними объектами в `SQL, который он пытается выполнить. Я пришел к быстрому и грязному хаку, который я перечислю ниже - Но мне было интересно, что-то мне здесь не хватает?
IList<BackerEntry> backersTemp = new List<BackerEntry>();
foreach (BackerEntry backerEntry in jsonBackerEntity.BackerEntries)
{
backersTemp.Add(backerEntry);
}
jsonBackerEntity.BackerEntries.Clear();
foreach (BackerEntry backerEntry in backersTemp)
{
jsonBackerEntity.AddChild(backerEntry);
}
Выполнение этого - единственный способ заставить NHibernate увидеть, что эти дети действительно принадлежат этому родителю. Внутри мой метод AddChild выглядит так:
public virtual void AddChild(BackerEntry backerEntry)
{
if (backerEntry.Backer != null)
{
backerEntry.Backer.BackerEntries.Remove(backerEntry);
}
backerEntry.Backer = this;
this.BackerEntries.Add(backerEntry);
}
РЕДАКТИРОВАТЬ: Я думаю, что, возможно, только что понял, почему - Возможно, потому что я не отправляю обратно свойство Parent ребенка в JSON. Я даже не уверен, возможно ли это из-за круговой природы обоих. У ребенка есть родитель (у которого в json есть ребенок, который является первоначальным ребенком, у которого есть родитель и т. Д.) ... Есть идеи?