0
私は関係を追加するときにデータベースへのラウンドトリップを減らしたいと思います。親/子を処理する最も効率的な方法
public class Parent { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList Children { get; set; } //inverse = true; cascade = all } public class Child { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Parent Parent { get; set; } } Child child = Session.Get(1); Parent parent = Session.Load(1); child.Parent = parent; Session.Flush();
私は子供のために選択し、子供のための更新のみがあります。しかし、第2レベルのキャッシュでは機能しません。私はセッション2でparent.Children.Add(子)を追加した場合
=== Session 1 === Parent parent = Session.Get(1); var count = parent.Children.Count; === Session 1 === === Session 2 === Child child = Session.Get(1); Parent parent = Session.Load(1); child.Parent = parent; Session.Flush(); === Session 2 === === Session 3 === Parent parent = Session.Get(1); var count = parent.Children.Count; //INCORRECT! Session 2 didn't update collection. === Session 3 ===
、NHibernateのは、親のために選択しませんが、なぜ?私はそれがオーバーヘッドだと思う。
どういう意味ですか? child.parentId = parentId?第2レベルのキャッシュでも機能しません。 – Andy