如何捕获EF的任何查询错误?

时间:2012-01-24 15:50:24

标签: entity-framework entity-framework-4

我在项目中使用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的查询)错误?

更新:如果不是所有人都可以,是否可以在一个地方为所有存储过程捕获错误?

2 个答案:

答案 0 :(得分:1)

在这个级别上是不可能的。您将不会获得导致错误的查询或存储过程。可能有custom provider wrapper和自定义错误处理可能在该级别的某处,但在这种情况下,您将处于相反的情况。您将知道查询,但您不会知道导致它们的源代码(如果不对您的映射进行逆向工程,您也不会知道所涉及的实体集)。

答案 1 :(得分:0)

如果您想监控数据上下文的查询,我建议EFProfiler。虽然它是一种商业产品,但它可以通过内置警告为您节省很多麻烦。