2014-12-08 6 views
5

Ich habe kürzlich herausgefunden, Entity Framework hat eine sehr einfache Möglichkeit, Verbindungen in SQL Azure belastbar zu machen. Gibt es einen empfohlenen Weg, das Gleiche in Dapper zu erreichen?Wie man Dapper für SqlAzure elastisch macht?

+0

Dapper ist nur ein Wrapper um ADO.NET; was * genau * meinst du mit "mach ... belastbar" hier? Was willst du anders machen? –

+2

Ich möchte alle Execute und Query-Aufrufe, die ich in Dapper mache, um kleinere Cloud-Probleme durch Azure zu überleben. Nach diesem Link http://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx bedeutet es, ich könnte nur upgraden mein Framework zu 4.5.1 und ADO.Net Verbindungen zu SQL Azure Environment wird automatisch belastbar sein? –

+1

Nein @JakobLithner, das wird nicht genug sein. Dieser Link behandelt nur Verbindungsunterbrechungen. Transiente Fehler werden nicht erwähnt, was die Hauptsorge ist. –

Antwort

10

Der schnellste Weg zum Schutz vor Verbindungsproblemen in C# gegen Azure ist der Microsoft Transient Fault Handling Block.

Zum Beispiel des folgende Code würde bis zu 3-mal mit Intervallen von 1 Sekunde in-zwischen wiederholen, wenn eine Verbindung zu einer Windows Azure SQL-Datenbank zu öffnen versuchen:

var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(1)); 

var retryPolicy = 
    new RetryPolicy<SqlDatabaseTransientErrorDetectionStrategy>(retryStrategy); 

retryPolicy.ExecuteAction(() => myConnection.Open()); 

FixedInterval ist die Rückseite aus Politik, so dass es werde versuchen, 1 Sekunde warten, es erneut versuchen, usw., bis es dreimal versucht wird.

SqlDatabaseTransientErrorDetectionStrategy wird einfach eine Überprüfung der Ausnahme ausgelöst, wenn es eine Verbindungsausnahme ist, die erneut versucht werden sollte, wird es dem RetryPolicy mitteilen, die Aktion erneut auszuführen. Wenn es keine Verbindungsausnahme ist, wird die Aktion nicht ausgeführt und die ursprüngliche Ausnahme wird normal ausgelöst.

Wie für wann sollten Sie es mit Dapper verwenden; Sie können die Eröffnungsverbindungen erneut versuchen und Operationen lesen, aber beachten Sie die Schreiboperationen, da das Risiko besteht, dass Sie doppelte Einträge löschen, eine Zeile zweimal löschen usw.

Weitere Details here, diese Bibliothek kann als NuGet Package here gefunden werden Dazu gehören die Erkennungsstrategien für Windows Azure.