假設一個後台要控制10個相同實體的資料庫伺服器
我不想建10個一樣的Entity
去對應到10個DbContext
有甚麼好方法解決只有連線字串不同的情況?
找了一下來試試這個
假如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")));
}