我正在使用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()方法一样,而不是在整个项目中进行更改。
感谢您的帮助! 马赫什