Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencapai Sambungan Pangkalan Data Dinamik dengan Rangka Kerja Entiti 6 untuk MySQL?

Bagaimana untuk Mencapai Sambungan Pangkalan Data Dinamik dengan Rangka Kerja Entiti 6 untuk MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-11 04:14:03224semak imbas

How to Achieve Dynamic Database Connection with Entity Framework 6 for MySQL?

Sambungan Pangkalan Data Dinamik dengan Rangka Kerja Entiti 6 untuk MySQL

Menyambungkan berbilang skema secara dinamik dengan Rangka Kerja Entiti 6 (EF6) boleh mencabar. Artikel ini menyediakan penyelesaian yang komprehensif untuk mewujudkan sambungan dinamik ke pangkalan data MySQL dan lulus rentetan sambungan berdasarkan nama pangkalan data yang dipilih.

Menyediakan MySQL untuk EF6

Mulakan dengan memasang MySQL .Net Connector 6.8.1 (Beta) dan merujuk perpustakaan dalam penyelesaian Visual Studio anda. Tambahkan rentetan sambungan dan maklumat pembekal pada fail Web.config:

<connectionStrings>
    <add name="mysqlCon"
         connectionString="Server=localhost;Database={0};Uid=username;Pwd=password" 
         providerName="MySql.Data.MySqlClient" />
</connectionStrings>

<entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
    <providers>
        <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
</entityFramework>

Mencipta Sambungan Pangkalan Data Dinamik

Seterusnya, ubah suai kelas ApplicationDbContext:

public class ApplicationDbContext: DbContext
{
    public ApplicationDbContext(string dbName) : base(GetConnectionString(dbName))
    {
    }

    public static string GetConnectionString(string dbName)
    {
        // Server=localhost;Database={0};Uid=username;Pwd=password
        var connString = 
            ConfigurationManager.ConnectionStrings["mysqlCon"].ConnectionString.ToString();

        return String.Format(connString, dbName);
    }
}

Ini membolehkan menghantar nama pangkalan data secara dinamik sebagai parameter apabila mencipta ApplicationDbContext baharu instance.

Mengendalikan Migrasi Pangkalan Data

Untuk migrasi, buat kelas MigrationContextFactory:

public class MigrationsContextFactory : IDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext Create()
    {
        return new ApplicationDbContext("developmentdb");
    }
}

Kilang ini menentukan pangkalan data lalai untuk migrasi, memastikan migrasi menyasarkan yang betul skema.

Kesimpulan

Menggunakan pendekatan ini membolehkan pemilihan dinamik skema pangkalan data dalam Rangka Kerja Entiti 6. Dengan mengubah suai kilang sambungan lalai dan mencipta kaedah pembantu untuk menjana secara dinamik rentetan sambungan, adalah mungkin untuk menyambung kepada berbilang skema dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Sambungan Pangkalan Data Dinamik dengan Rangka Kerja Entiti 6 untuk MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn