【问题标题】:How does NHibernate determine whether to Insert or Update a record?NHibernate 如何确定是插入还是更新记录?
【发布时间】:2011-04-09 07:08:57
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c# nhibernate s#arp


【解决方案1】:

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

但是,听起来您的会话中可能会发生一些时髦的事情。您可能想尝试SaveOrUpdateCopy() 看看这是否能解决您的问题。

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2014-05-18
    相关资源
    最近更新 更多