iT邦幫忙

0

[EF] 請問 同一個 資料實體 對應多個 資料庫伺服器 有甚麼好方法處理?

假設一個後台要控制10個相同實體的資料庫伺服器

我不想建10個一樣的Entity
去對應到10個DbContext

有甚麼好方法解決只有連線字串不同的情況?

找了一下來試試這個

https://entityframework.net/change-connection-at-runtime

1 個回答

0
暐翰
iT邦大師 1 級 ‧ 2019-07-18 12:21:09

假如EF(非Core版本)照你提供的連結就可以,使用connection string建構式,替換就可以達到使用不同資料庫需求

public CustomerContext(string connectionString) : base(connectionString){}

EF Core版本比較麻煩要使用DI
首先建立一個共用繼承DbContext子類別,每個connectionstring建立一個Context去繼承它

public class BaseDbContext : DbContext
{
    public DbSet<YourProporty> YourProportys { get; set; }
}

public class Db1Context : BaseDbContext
{

}

public class Db2Context : BaseDbContext
{

}

最後在 ConfigureServices 做 DI 注入,依照ConnectionString建立對應的子類別就可以

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<Db1Context>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("Db1ContextConnection")));

    services.AddDbContext<Db2Context>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("Db2ContextConnection")));

}
jakeuj iT邦新手 5 級 ‧ 2019-09-06 14:56:41 檢舉

問題就是我可能有四五十服的資料,要件四五十個DBCONTEXT
後來我用DAPPER處理了@@

我要發表回答

立即登入回答