Mysql
 sql >> база данни >  >> RDS >> Mysql

Два различни доставчика в един и същ конфигурационен файл

На първо място, вие използвате грешни конфигурационни класове. DbConfigurationType се нуждае от тип, наследен от DbConfiguration, а не от DbMigrationsConfiguration<>.

DbMigrationsConfiguration наистина се използва само за миграторите и инициализаторите на база данни.

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

За съжаление това не е възможно, така че задайте няколко DefaultConnectionFactory дори с множество DbConfigurations.

Във вашия случай ще трябва да съхраните низовете за връзка в app.config и да предадете името на конструктора DbContext.

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

        }

Връзката ще бъде инициализирана въз основа на името на доставчика за MyConnectionString в app.config

Или ако не искате низът за връзка във вашия app.config, просто предайте вече инициализирана DbConnection към конструктора DbContext

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

        }

Или ако не искате да инициализирате конкретна връзка, използвайте 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Необходимо е да интегрирате IDX MLS в уебсайт

  2. Docker:Комбинирайте няколко изображения

  3. SQl актуализация от таблица с произволни имена

  4. Изберете Заявка | Изберете цели, които не започват с номер - MySQL

  5. Използване на клауза WHERE за намиране на POI в обхват на разстояние от дължина и ширина