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 回答