2011-04-07 17 views
3

功能NHibernate出現錯誤:與指定的標識符沒有行存在。流利的nHibernate:不存在具有給定標識符的行。當用戶刪除某些項目

我有一個對象,具有項目集合。 我的問題是:當用戶看到的對象和一個用戶刪除一些項目出現錯誤。 其他用戶應該看到更新的對象,沒有刪除的項目,而不是一個例外。

我想:

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(); 

我這個問題,不知道如何刷新項目,以獲得更新,其他用戶沒有。

如何刷新與項目目標沒有得到一個異常?

回答

2

它實際上是你得到這個異常是一件好事。這就是所謂的樂觀併發(谷歌它; here是一個足夠簡單的解釋)。
你需要做的是捕獲了異常,並把它翻譯成一些用戶理解的形式。例如:

catch (WhateverConcurrencyException ex) 
{ 
    throw new UserReadableException("The object with id "+id+" no longer exists"); 
} 
+0

我想要的是在這種情況下沒有異常,因爲行消失是預期的。因爲用戶編輯並刪除了一些未使用的行,所以其他用戶必須在沒有任何錯誤的情況下查看包含當前項目的新對象。我該怎麼做?刷新沒有異常的對象? – Tony 2011-04-07 19:10:53

相關問題