【问题标题】:NHibernate Force SQL Row versioning column (update_timestamp) to update without updating existing values [closed]NHibernate 强制 SQL 行版本控制列(update_timestamp)更新而不更新现有值 [关闭]
【发布时间】:2022-01-13 10:32:48
【问题描述】:

所以我有这个 NHibernate ORM 项目,我必须强制 SQL 行版本控制时间戳列更新(增加)而不更改表的特定行的任何现有值。

这是因为我有另一个程序将读取该表的更新时间戳,现在我希望它通过使用现有值更新一行来再次读取。我可以通过使用 sql update 语句轻松实现这一点。

但是当我在 ORM 项目中使用相同的值更新(在 NHibernate 中合并)时,更新时间戳不会改变,我相信只有在值改变时才会更新。

那么有没有办法在 NHibernate ORM 中强制更新具有相同值的行?

【问题讨论】:

  • 您好,感谢您的回复。使用 update 会抛出错误,说相同的对象已经存在。我不想更新数据,我只是想让 SQL Row 版本控制列更新/增加,这就是为什么我用相同的值声明更新,如果我确实修改了数据(例如从 1 到 2,但现在我希望它保持为 1)。结果我希望看到 SQL 行版本控制列得到更新/增加,仅此而已。我看到的肮脏解决方案是有一个虚拟/未使用的列并用数据时间更新它。

标签: c# sql-server nhibernate


【解决方案1】:

要仅更新版本列,您可以使用session.Lock

session.Lock(entity, LockMode.Force);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2019-01-11
    • 2018-04-22
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多