拦截DbContext中的查询

时间:2013-06-14 19:16:59

标签: c# sql entity-framework azure-sql-database dbcontext

我正在使用SQL Azure开发一个项目。为了处理Sql Azure Transient Errors,我正在使用Transient Fault处理框架。

我有一个继承自DbContext的类MContext 我在这个类中为实体框架SaveChanges()方法编写了一个方法覆盖,如下所示:

private ITransientErrorDetectionStrategy errorDetectionStrategy = new SqlAzureTransientErrorDetectionStrategy();

private RetryPolicy policy= new RetryPolicy(errorDetectionStrategy, 3);

 public override int SaveChanges()
        {
            return policy.ExecuteAction(() =>
            {
                return base.SaveChanges();
            });
        }  

这样我就不必在调用SaveChanges()的项目中进行代码更改。

我想知道是否有办法对LINQ查询执行相同的操作。

例如:

policy.ExecuteAction(() =>
            {
                var x = from user in context.Users select user.Id;
            });

不是通过添加

在整个项目中进行代码更改
policy.ExecuteAction(() =>
            {
}); 

阻止所有linq查询并强制团队中的其他人执行相同操作,是否有办法拦截MContext类中的linq查询并应用Transient处理?

我可以编写一个扩展方法并在所有查询上调用它,但同样需要在整个项目中更改代码。

我想在一个地方处理它,就像覆盖SaveChanges()方法一样,而不是在整个项目中进行更改。

感谢您的帮助! 马赫什

0 个答案:

没有答案