【发布时间】:2009-05-01 20:55:59
【问题描述】:
我正在 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();
}
}
【问题讨论】:
-
刚遇到同样的情况。我认为这是一个糟糕的默认设置,我会在适当的论坛中寻找在线讨论。这导致了我正在处理的服务器应用程序中的错误 - 因为它改变了应用程序逻辑,通常在创建对象的并发操作的情况下,然后获取,由另一个线程/进程(不同的会话)获取,修改和更新(更新单独的非相关字段)。上一次更新将覆盖上一次事务中的更改...我已与同事协商过,我们认为性能提升并不大。
-
@YonatanKarni,这不仅关乎性能,还关乎一致性。请参阅此question 及其currently accepted answer。
标签: sql nhibernate sql-update