NHIBERNATE并发Windows Service ASP.NET MVC网站



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

其中一个实体(称为配置文件)具有包含图像的URL的字符串属性。

此属性随机丢失其价值,我不知道是什么原因引起的。用户通过MVC前端更新此信息,但我的直觉是Windows服务正在使用实体的较旧实例覆盖其值(Windows Service更新了同一类上的另一个属性)。

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

善意

sam

一个选项可以使用乐观的锁定使用<version/>。因此,您没有性能弊端,您确定结果就是您想要的。如果一个代理商试图更新记录的另一个代理,则该代理将失败。当然,您应该以某种方式处理这个例外,但至少您没有肮脏的更新/读取。要使用 <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"                           
/>

最新更新