Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dua penyedia berbeda pada file konfigurasi yang sama

Pertama-tama Anda menggunakan kelas konfigurasi yang salah. DbConfigurationType membutuhkan tipe yang diwarisi dari DbConfiguration bukan DbMigrationsConfiguration<>.

DbMigrationsConfiguration benar-benar hanya digunakan untuk Migrators dan 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

Sayangnya itu tidak mungkin, jadi atur beberapa DefaultConnectionFactories bahkan dengan beberapa DbConfigurations.

Dalam kasus Anda, Anda harus menyimpan string koneksi di app.config dan meneruskan nama tersebut ke konstruktor DbContext.

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

        }

Koneksi akan diinisialisasi berdasarkan nama penyedia untuk MyConnectionString di app.config

Atau jika Anda tidak ingin string koneksi di app.config Anda, cukup berikan DbConnection yang sudah diinisialisasi ke konstruktor DbContext

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

        }

Atau jika Anda tidak ingin menginisialisasi Koneksi tertentu, gunakan 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. Bagaimana cara mengubah posisi kolom tabel MySQL tanpa kehilangan data kolom?

  2. Klausa GROUP BY dengan alias?

  3. Cara tercepat untuk memperbarui tabel MySQL jika ada baris lain yang disisipkan. Lebih dari 2 kunci non-unik

  4. Simpan IPv6 dalam database

  5. Mesin penyimpanan MySQL untuk tabel log