sql >> Databasteknik >  >> RDS >> Mysql

Två olika leverantörer på samma konfigurationsfil

Först och främst använder du fel konfigurationsklasser. DbConfigurationType behöver en typ som ärvs från DbConfiguration, inte DbMigrationsConfiguration<>.

DbMigrationsConfiguration används egentligen bara för Migrators och DatabaseInitializers.

public class MyDbConfiguration : DbConfiguration
{
    public MyDbConfiguration()
    {
        this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"));

        this.SetProviderServices("System.Data.SqlServerCe.4.0", SqlCeProviderServices.Instance);

        this.AddInterceptor(new NLogCommandInterceptor());// guardar logs

        this.SetMigrationSqlGenerator("System.Data.SqlServerCe.4.0", () => new SqlCeMigrationSqlGenerator());
    }
}

[DbConfigurationType(typeof(MyDbConfiguration))]
public class TestContext : DbContext

Tyvärr är det inte möjligt så ställ in flera DefaultConnectionFactories även med flera DbConfigurations.

I ditt fall måste du lagra anslutningssträngarna i app.config och skicka namnet till DbContext-konstruktorn.

public class TestContext : DbContext
    {
        public TestContext()
            : base("name=MyConnectionString")
        {

        }

Anslutningen kommer att initieras baserat på leverantörens namn för MyConnectionString i app.config

Eller om du inte vill ha anslutningssträngen i din app.config, skicka bara en redan initierad DbConnection till DbContext-konstruktorn

public class TestContext : DbContext
    {
        public TestContext()
            : base(new SqlCeConnection(GetConnectionString()),true)
        {

        }

Eller om du inte vill initiera en specifik anslutning använd DbProviderFactory.

public class TestContext : DbContext
    {
        public TestContext()
            : base(GetConnection(),true)
        {

        }

        public static DbConnection GetConnection() { 
            var factory = DbProviderFactories.GetFactory("System.Data.SqlServerCe.4.0");
            var connection = factory.CreateConnection();
            connection.ConnectionString = "Data Source=C:/teste2.sdf;Persist Security Info=False;";
            return connection;
        }


  1. skapa jcomponents med hjälp av databas

  2. Hur man uppdaterar främmande nyckelvärde i mysql-databasen

  3. lägg till födelsedagshändelser i jQuerys fullständiga kalender varje år

  4. Hur hittar man n:e ranking i MySQL?