Fluent nHibernate:不存在具有给定标识符的行。
我有一个Object,它有一个Items集合。 我的问题是:当2个用户看到对象而一个用户删除某个项目时发生错误。 另一个用户应该看到对象已更新,没有已删除的项目,而不是异常。
我试过了:
session.Evict(p);
// the following line will throw an exception
session.Refresh(p);
No row with the given identifier exists[Sistema.ERPxx.Pedidos.ItemPedido#74435]
在映射中指定:
this.HasMany<ItemPedido>(v => v.Items).KeyColumn("numero_pedido").Cascade.All().OrderBy("descricao_produto").LazyLoad().NotFound.Ignore();
我遇到此问题,并且不知道如何刷新项目以获取其他用户所做的更新。
如何使用Items刷新对象而不会出现异常?
答案 0 :(得分:2)
实际上你得到这个例外是件好事。这就是所谓的乐观并发(google it; here是一个简单的解释) 您需要做的是捕获该异常,并将其转换为用户可理解的格式。例如:
catch (WhateverConcurrencyException ex)
{
throw new UserReadableException("The object with id "+id+" no longer exists");
}