我在项目中使用EF。保存任何数据更改时,可以通过覆盖SaveChanges来捕获任何错误的中心位置,如:
public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
try
{
return base.SaveChanges(options);
}
catch (Exception ex)
{
//capture error here
throw ex;
}
}
如何以类似的方式捕获所有查询(基于linq的实体集查询或来自SP的查询)错误?
更新:如果不是所有人都可以,是否可以在一个地方为所有存储过程捕获错误?
答案 0 :(得分:1)
在这个级别上是不可能的。您将不会获得导致错误的查询或存储过程。可能有custom provider wrapper和自定义错误处理可能在该级别的某处,但在这种情况下,您将处于相反的情况。您将知道查询,但您不会知道导致它们的源代码(如果不对您的映射进行逆向工程,您也不会知道所涉及的实体集)。
答案 1 :(得分:0)
如果您想监控数据上下文的查询,我建议EFProfiler。虽然它是一种商业产品,但它可以通过内置警告为您节省很多麻烦。