当代码中的任何位置对数据库进行查询时,我需要闯入调试器。是否有一些方法可以在我的
DbContext
中重写,我只调用基类,但我可以在那里放置一个断点。然后我会中断数据库的任何查询?
和/或有其他方法可以实现这一点吗?
强调一下,我需要暂停读取数据。我确实有一个
SaveChangesAsync()
覆盖,我用它来在创建/更新/删除时中断。
您可以使用
IQueryExpressionInterceptor
。创建一些简单的东西并将断点放入拦截器代码中:
public class QueryExpressionFakeInterceptor : IQueryExpressionInterceptor
{
public static QueryExpressionFakeInterceptor Default = new QueryExpressionFakeInterceptor();
public Expression QueryCompilationStarting(Expression queryExpression, QueryExpressionEventData eventData)
{
return queryExpression; // put breakpoint here
}
}
并注册拦截器:
builder
.UseSqlServer(connectionString) // or any other provider
.AddInterceptors(QueryExpressionFakeInterceptor.Default);
此解决方案适用于任何查询,
ExecuteUpdate
和ExecuteDelete
。