0

我有一个 Windows 服务和一个 ASP.NET MVC 2 应用程序,它们都使用 Fluent nHibernate (nHibernate 3) 连接到同一个数据库。

其中一个实体(称为 Profile)有一个字符串属性,其中包含图像的 url。

这个属性随机失去它的价值,我不知道是什么原因造成的。用户通过 MVC 前端更新它,但我的直觉是 windows 服务正在用实体的旧实例覆盖它的值(windows 服务更新同一类的另一个属性)。

有人可以解释/帮助如何调试这个或管理并发的最佳方法,我已经阅读了这个主题,但对 nHibernate 中的乐观和悲观锁定感到困惑。

亲切的问候

山姆

4

1 回答 1

0

一个选项可以<version/>Optimistic Locking一起使用。有了这个,你就没有性能缺陷,而且你确信结果是你想要的。如果一个代理尝试更新另一个代理之前更新的记录,则该代理将失败。当然,您应该以某种方式处理该异常,但至少您没有脏更新/读取。要使用<version/> tou ,应在表中添加一列以维护版本。在标准 NH 映射中,文档是:

<version
        column="version_column"                            
        name="PropertyName"                                
        type="typename"                                    
        access="field|property|nosetter|ClassName"         
        unsaved-value="null|negative|undefined|value"      
        generated="never|always"                           
/>
于 2012-11-02T15:48:00.870 回答