我有一个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"
/>