我看过的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