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?
Antwort
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.
- 1. SQLAzure Volltext intermittierend langsam
- 2. Wie implementiert man SQL Azure Transient Fehlerbehandlung Framework für Dapper?
- 3. Wie macht man Mocks für Web-Tests?
- 4. Wie man Datumsumwandlung macht?
- 5. Wie man Zahlenauswahldialog macht?
- 6. Dapper-Unterstützung für tragbares Bibliotheksprojekt
- 7. Dapper Einlage oder Update?
- 8. Wie man eine Ziffernrunde macht?
- 9. Waterline Wie man Rückwärtsindex macht
- 10. wie man dynamisches Formular macht
- 11. Dapper: Wie liest man das Dictionary aus der Query ein?
- 12. Wie macht man zoombare Scrollview?
- 13. Wie man einmal etwas macht
- 14. Dapper Ergebnisse (Dapper Row) mit Halterung Notation
- 15. Wie man Code flexibler macht
- 16. Dapper. Paging
- 17. Wie man Navigationstastatur zugänglich macht?
- 18. Wie macht man `wo nicht`?
- 19. Wie man Datumszeit so macht?
- 20. Wie man rotierendes Menü macht
- 21. Wie man eine Shell macht?
- 22. Wie man Animation glatt macht
- 23. Wie macht man Dendogramme visueller?
- 24. wie man jmeter Ausgabegraphen macht
- 25. Wie macht man Klassen testbarer?
- 26. Wie macht man "schöne Rundungen"?
- 27. Wie macht man diese Nachbarfunktion?
- 28. Wie macht man diese Übung?
- 29. Wie man MFCC-Algorithmus macht?
- 30. Wie macht man RLMResults veränderbar?
Dapper ist nur ein Wrapper um ADO.NET; was * genau * meinst du mit "mach ... belastbar" hier? Was willst du anders machen? –
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? –
Nein @JakobLithner, das wird nicht genug sein. Dieser Link behandelt nur Verbindungsunterbrechungen. Transiente Fehler werden nicht erwähnt, was die Hauptsorge ist. –