2014-12-08 17 views
5

Geçtiğimiz günlerde Entity Framework'ün SQL Azure'da bağlantıları esnek hale getirmenin çok kolay bir yolu olduğunu öğrendim. Dapper'da bunu başarmanın önerilen bir yolu var mı?SqlAzure için Dapper esnek nasıl yapılır?

+0

Dapper sadece ADO.NET; Ne * tam * burada "dirençli ..." demek istiyorsun? farklı olarak ne yapmak istersiniz? –

+2

Azure'un neden olduğu küçük bulut sorunlarından kurtulmak için Dapper'da yaptığım tüm Execute and Query çağrılarını istiyorum. Bu bağlantıyı takiben http://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx sadece yeni sürüme geçebileceğim anlamına geliyor SQL Azure ortam ağına 4.5.1 ve ADO.Net bağlantılarımın altyapısı otomatik olarak esnek olacak mı? –

+1

Hayır @JakobLithner yeterli olmayacak. Bu bağlantı sadece bağlantı bağlantılarını tartışır. Ana endişe olan geçici hatalardan bahsetmez. –

cevap

10

C# konumundaki Azure'a bağlantı sorunlarına karşı korunmanın en hızlı yolu Microsoft Transient Fault Handling Block'dur. ,

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

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

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

FixedInterval geri çekil politikasıdır bunu böylece:

Örneğin aşağıdaki kod, bir Windows Azure SQL Veritabanı bağlantı açmaya çalışırken aradaki-1 saniye aralıklarla 3 kez kadar yeniden denemek istiyorum deneyecek, 1 saniye bekle, tekrar denemeye, 3 kere denemeye kadar.

SqlDatabaseTransientErrorDetectionStrategy basitçe atılan istisnayla ilgili bir kontrol gerçekleştirir, yeniden denenmesi gereken bir bağlantı istisnası durumunda, eylemi tekrar yürütmek için RetryPolicy bildirir. Bağlantı bir istisna değilse, eylem yürütülmez ve özgün istisna normal olarak atılır.

Dapper ile ne zaman kullanacağınıza gelince; Bağlantıları açmayı güvenli bir şekilde yeniden deneyebilir ve işlemleri okuyabilir, ancak iki veya daha fazla satırı silme riskiyle karşılaştığından, yazma işlemlerini tekrar hatırlamanız veya yeniden denemeniz gerekebilir.

Daha fazla ayrıntı here, bu kütüphane NuGet Package here olarak bulunabilir Windows Azure için algılama stratejilerini içerir.