مقاومت اتصال و اتصالات بهبودپذیر در Entity framework 6
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۰۱/۲۹ ۱۲:۱۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class MyConfiguration : DbConfiguration
{
public MyConfiguration()
{
SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
}
} public class SqlServerExecutionStrategy : DbExecutionStrategy
{
public SqlServerExecutionStrategy()
{ }
public SqlServerExecutionStrategy(int maxRetryCount, TimeSpan maxDelay)
: base(maxRetryCount, maxDelay)
{ }
protected override bool ShouldRetryOn(Exception ex)
{
var sqlException = ex as SqlException;
if (sqlException == null)
return false; // don't retry
foreach (var error in sqlException.Errors.Cast<SqlError>())
{
switch (error.Number)
{
case 1205: // Deadlock
case -1: // Timeout
case -2: // Timeout
return true; // retry
}
}
return false;
}
} protected override TimeSpan? GetNextDelay(Exception lastException)
{
return base.GetNextDelay(lastException);
} public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
SetExecutionStrategy("System.Data.SqlClient", () => new SqlServerExecutionStrategy());
}
} using (var db = new BloggingContext())
{
using (var trn = db.Database.BeginTransaction())
{
db.Blogs.Add(new Site { Url = "http://msdn.com/data/ef" });
db.Blogs.Add(new Site { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
db.Blogs.Add(new Site { Url = "http://twitter.com/efmagicunicorns" });
db.SaveChanges();
trn.Commit();
}
}