我在NHibernate中对单个属性执行标准更新。但是在提交事务时,sql update似乎设置了我在表上映射的所有字段,即使它们没有更改。当然这在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();
}
}
答案 0 :(得分:16)
这是正常行为。您可以尝试将dynamic-update="true"
添加到类定义中以覆盖此行为。
答案 1 :(得分:3)
好。是的,这是NHibernate的正常行为。您可以使用属性的生成属性来更改行为。有关Ayende's blog的详细信息。
为什么这是默认值,因为动态不会让您的查询计划被缓存。通常,您不介意通过应用程序服务器和数据库之间的高速网络连接发送更多字节。除非您保存长字符串,否则此设置非常合适。