我看過的Repository Patterns的例子都沒有包含任何類型的錯誤處理。 這是爲什麼?舉例來說,我有這個:試試看Catch
public virtual TItem Insert<TItem>(TItem item) where TItem:class,new()
{
dbContext.Set<TItem>().Add(item);
try
{
dbContext.SaveChanges();
}
catch (DbUpdateException)
{
return null;
}
return item;
}
一個我們違反約束的實例。我捕捉到DbUpdateException ...如果不在存儲庫本身中,這個錯誤處理將在何處生效?
我沒有問題拋出DbUpdate異常,它比我同意的NullRefrence更乾淨。回到sotred程序那天,我們會使用,如果不存在。很顯然,我對數據模型持有不同的看法。那麼如何使一個實體足夠聰明,在插入之前檢查記錄? – 2011-04-06 04:08:13
一種方法是在插入之前使用某種驗證器來檢查約束條件,以便提供友好的錯誤消息。或者你可以捕獲數據庫在任何使用版本庫時拋出的約束異常。無論哪種方式,我不認爲這是存儲庫的工作,以確定是否可以插入記錄。 – rsbarro 2011-04-06 04:24:40
我同意,當我完成存儲庫代碼並實際爲消費者連接一些DI時,我將穿越該橋。 – 2011-04-06 04:28:06