如何使用Entity Framework 6 for MySQL實作動態資料庫連線?

Barbara Streisand
發布: 2024-11-11 04:14:03
原創
223 人瀏覽過

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

與Entity Framework 6 for MySQL 的動態資料庫連線

使用Entity Framework 6 (EF6) 動態連線多個架構可能具有挑戰性。本文提供了一個全面的解決方案,用於建立與 MySQL 資料庫的動態連接,並根據所選資料庫名稱傳遞連接字串。

讓 MySQL 為 EF6 做好準備

開始透過安裝 MySQL .Net Connector 6.8.1(測試版)並引用 Visual Studio 解決方案中的函式庫。將連線字串和提供者資訊加入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>
登入後複製

建立動態資料庫連線

接下來,修改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);
    }
}
登入後複製

這允許在建立新的ApplicationDbContext時動態傳遞資料庫名稱作為參數

處理資料庫遷移

對於遷移,建立一個 MigrationsContextFactory類別:

public class MigrationsContextFactory : IDbContextFactory<ApplicationDbContext>
{
    public ApplicationDbContext Create()
    {
        return new ApplicationDbContext("developmentdb");
    }
}
登入後複製

此工廠指定用於遷移的預設資料庫,確保遷移目標正確schema.

結論

利用這種方法可以在Entity Framework 6 中動態選擇資料庫模式。透過修改預設連接工廠並建立一個輔助方法來動態產生連接字串,可以有效地連接到多個模式。

以上是如何使用Entity Framework 6 for MySQL實作動態資料庫連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板