2

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 クエリを傍受し、一時的な処理を適用する方法はありますか?

拡張メソッドを作成してすべてのクエリで呼び出すことはできますが、その場合もプロジェクト全体でコードを変更する必要があります。

SaveChanges() メソッドをオーバーライドするのと同じように 1 か所で処理し、プロジェクト全体を変更したくありません。

ご協力いただきありがとうございます!マヘシュ

4

0 に答える 0