c# - NHibernate 如何确定是插入还是更新记录?

标签 c# nhibernate s#arp

当使用 Session.SaveOrUpdate(myEntity); 时,NHibernate 如何决定是插入新记录还是更新现有记录?

我在 S#arp 项目中保存一个对象时遇到问题。它从存储中检索,然后存储在 session 状态中用于几个 Web 请求,然后保存回数据库并更改一个属性(不是 S#arp [DomainSignature])。

在运行时,我使用 Equals() 方法将即将持久化的对象与直接从数据库中检索到的版本进行比较,结果返回 true。但是,该对象最终仍会在数据库中创建一个新行。

在应用程序的其他地方,这工作正常,但我希望获得有关 NHib 如何解决此问题的指示。

最佳答案

基本上 SaveOrUpdate() 正在寻找一个标识符。如果标识符存在,它将更新数据库中的记录。如果标识符不存在,它将创建一个新记录。

但是,听起来您的 session 中可能发生了一些奇怪的事情。您可能想尝试 SaveOrUpdateCopy() 看看这是否能解决您的问题。

关于c# - NHibernate 如何确定是插入还是更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660496/

相关文章:

c# - 如果 DateTime.Now 不够好怎么办?

C#多线程文件IO(阅读)

c# - 电话号码标准化 : Any pre-existing libraries?

c# - C# 中比较字符串 null 或空

c# - 为什么此 NHibernate Linq 查询会尝试执行插入语句?

c# - nhibernate中的HasOne和References有什么区别?

c# - Nhibernate - 在不加载实体的情况下更新单个字段?