1
私はしばらくの間NHibernateを使用していたようですが、このORMのいくつかの基本概念を誤解しています。のは、私は「ブログ」と私はそうのような永続化インスタンスをロードするというクラスがあるとしましょう:NHibernate:接続されたエンティティの明示的な更新呼び出し
using (var tx = Session.BeginTransaction())
{
var myBlog = Session.Get(10);
tx.Commit();
}
私は今、このインスタンスのプロパティを変更する場合は、NHibernateのは自動的に保存されていない変更を検出しているようだとのUPDATEを生成しますトランザクションコミット。
これは、次の文は正確に同じことを行うことを、発生します
using (var tx = Session.BeginTransaction())
{
var myBlog = Session.Get(10);
myBlog.Title = "Changed title";
tx.Commit();
}
using (var tx = Session.BeginTransaction())
{
var myBlog = Session.Get(10);
myBlog.Title = "Changed title";
Session.Update(myBlog); // why is this necessary?
tx.Commit();
}
私はNHProfと何の違いも表示されません。では、明示的なUpdateメソッドが存在するのはなぜですか?また、それをいつ使うべきですか?
うわー!これは私の現在のアプリケーションで大きなパフォーマンス上の利点を持っているようです。私の現在の更新メソッドでは、常にIDを使用して添付されたエンティティを取得してから、DTOからすべてのプロパティを1つずつコピーしました。これはもちろん、更新する前にエンティティを最初にフェッチしなければならなかったので、2 dbラウンドトリップになりました!ヒントありがとう! –