13

NHibernate で単一のプロパティに対して標準的な更新を実行しています。ただし、トランザクションのコミット時に、変更されていないにもかかわらず、テーブルにマップしたすべてのフィールドが SQL 更新によって設定されているようです。確かに、これは Nhibernate の通常の動作ではありませんか? 私は何か間違ったことをしていますか?ありがとう

using (var session = sessionFactory.OpenSession())
           {
               using (var transaction = session.BeginTransaction())
               {
                   var singleMeeting = session.Load<Meeting>(10193);
                   singleMeeting.Subject = "This is a test 2";

                   transaction.Commit();
               }
           }
4

2 に答える 2

16

これは正常な動作です。dynamic-update="true"クラス定義に追加して、この動作をオーバーライドしてみてください。

于 2009-05-01T21:09:30.887 に答える
3

上手。はい、これはNHibernateの正常な動作です。プロパティに生成された属性を使用して、動作を変更できます。Ayendeのブログの詳細。

このデフォルトがなぜであるかは、ダイナミクスではクエリプランがキャッシュされないためです。また、通常は、アプリケーションサーバーとデータベース間の高速ネットワーク接続を介してさらに数バイトを送信してもかまいません。この設定が完全​​に適切な場所で長い文字列を保存する場合を除きます。

于 2009-05-01T21:03:16.613 に答える