|
|
1
37
我知道这有点晚了,你可能已经找到了解决方案,但也许其他人可以从中受益… 当您更新保存在缓存中的实体的实例时,会从nhibernate引发此错误。基本上,nhibernate在加载后将对象存储在缓存中,因此下次调用将从缓存中获取对象。如果更新缓存中存在的实例,nhibernate将抛出此错误,否则可能导致与加载对象的旧副本相关的脏读取和冲突。 要解决此问题,您需要使用evict方法从缓存中删除对象,如:
希望这有帮助。 |
|
|
2
10
我尝试了@claitonlovatojr的黑客攻击,但我仍然无法处理错误。
我要做的就是替换我的
在存储库中,更改:
此外,有关更多信息,请参阅 this answer . |
|
|
3
4
一种可能的解决方案是从数据库中读取对象,将字段复制到对象,然后保存它。nHibernate会话对由MVC模型绑定器实例化的传入对象一无所知。 在某些情况下,整个对象可能不可见或传递给视图/视图模型。保存时,应首先从nhibernate读取,然后更新并保存。
这需要将ViewModel/Class属性解析/映射到域模型/类,但在许多情况下,您不必将它们全部显示出来以便在视图中进行更新,因此您无论如何都需要这样做(不能在旧对象上保存部分空的对象)。 |
|
|
4
1
要获得更大的效果,可以使用clear()方法 |
|
|
5
0
我刚遇到这个问题,洛瓦托的回答不起作用。不过,iko的确有成效。这里有一个更健壮的iko版本,缺点是有x2次访问数据库——一次是访问get,另一次是访问insert/update。
|
|
|
Andrus · 如何在Linux中阅读期刊 1 年前 |
|
|
Miranda · 读取xml文件时路径错误中有非法字符 1 年前 |
|
|
Primdonm · 如何将自定义列表中的字符串值格式化为货币格式? 2 年前 |
|
|
Kiryl · Sitecore中自己的控制器 2 年前 |
|
|
Farid · 如何从数据库中填充Resource.resx文件值? 2 年前 |