Search code examples
entity-frameworkazure-sql-databaseentity-framework-migrationsentity-framework-6.1

SetExecutionStrategy to SqlAzureExecutionStrategy with DbMigrationsConfiguration?


I saw a post today about implementing SqlAzureExecutionStrategy:

http://romiller.com/tag/sqlazureexecutionstrategy/

However, all examples I can find of this use a Configuration that inherits from DbConfiguration. My project is using EF6 Code First Migrations, and the Configuration it created inherits from DbMigrationsConfiguration. This class doesn't contain a definition for SetExecutionStrategy, and I can find no examples that actually combine SqlAzureExecutionStrategy (or any SetExecutionStrategy) with DbMigrationsConfiguration.

Can this be done?


Solution

  • If anyone else comes across this question, this is what we figured out:

    Create a custom class that inherits from DbConfiguration (which has SetExecutionStrategy):

    public class DataContextConfiguration : DbConfiguration
    {
        public DataContextConfiguration()
        {
            SetExecutionStrategy("System.Data.SqlClient", () => new SqlAzureExecutionStrategy());
        }
    }
    

    Then add this attribute to your DataContext, specifying that it is to use your custom class:

    [DbConfigurationType(typeof(DataContextConfiguration))]
    public class DataContext : DbContext, IDataContext
    {
        ...
    }