私は典型的な親子関係を持っています。ニュースの書き込み.NET
と子供NHibernate
の追加はうまく機能し、うまく機能し、正しい関係が追加されます。
ただし、JSON object
JSON を .NET 表現にシリアル化するメソッドにクライアントから a を渡すと、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 プロパティを送り返していないためです。2つの循環的な性質のために、それが可能かどうかさえわかりません. 子には親がいます(jsonには、親を持つ元の子である子がいます)...何かアイデアはありますか?