paj*_*asv 3 c# asp.net nhibernate asp.net-mvc
我只想更新数据库中记录的一列。不是整个记录,而只是一列 (Stav)。我正在使用 NHibernate 并通过 DAO 访问。
Rezervace_dao rezervaceDao = new Rezervace_dao();
r.Stav = 1;
rezervaceDao.Update(r);
Run Code Online (Sandbox Code Playgroud)
上面的代码更新了整个记录,但这不是我想要的。
非常感谢。
在您的示例代码中,您调用Update了一个实体。这是为了更新分离的实体,即当前 NHibernate 会话未跟踪的实体。
当更新分离的实体时,你告诉 NHibernate 接受提供的实体并将其视为它的完整新状态,以便在数据库中更新它。所以所有你没有设置的属性都会有它们的默认值,NHibernate 会认为它必须用这些默认值更新数据库。
如果您只想更改一个属性,则必须首先使用 NHibernate 加载您的实体,更改属性,然后更改Flush会话。
var r = session.Load<Rezervace>(id);
r.Stav = 1;
session.Flush();
Run Code Online (Sandbox Code Playgroud)
当从当前会话加载实体时,无需告诉 NHibernate 您要更新哪个实体。
默认情况下,NHibernate 仍会使用它们以前的值更新所有属性,并使用其新值更新更改的属性。正如Rabban answer所说,您必须启用dynamic-update类映射才能更改此行为,并且让 NHibernate 仅更新已更改的属性。
笔记:
我现在认为我不应该回答但:
| 归档时间: |
|
| 查看次数: |
3484 次 |
| 最近记录: |