我有一个典型的父母/子女关系。写新闻.NET
和添加孩子效果很好,NHibernate
玩得很好,并增加了正确的关系。
但是,当将 aJSON object
从客户端传递给将我的 JSON 序列化为 .NET 表示的某个方法时,NHibernate 似乎会感到困惑。它提出了正确的查询来添加父级(并为 Id 分配一个新的 guid),但是,它不会将该父级 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);
}
编辑:我想我可能刚刚意识到为什么 - 可能是因为我没有在 JSON 中发回孩子的 Parent 属性。由于两者的循环性质,我什至不确定这是否可能。孩子有父母(在json中有一个孩子,他是有父母的原始孩子,等等)......有什么想法吗?