根據運行時的用戶選擇,我的數據庫具有不同的架構。如何在運行時更改EF7或EF內核中的數據庫模式
我的代碼如下:
public partial class FashionContext : DbContext
{
private string _schema;
public FashionContext(string schema) : base()
{
_schema = schema;
}
public virtual DbSet<Style> Styles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlServer(@"Server=.\sqlexpress;Database=inforfashionplm;Trusted_Connection=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Style>()
.ToTable("Style", schema: _schema);
}
}
一旦測試。我用'schema1'創建了一個上下文實例。 目前爲止這麼好。
但是當我使用不同模式'schema2'創建另一個上下文實例時,模式仍在'schema1'上的結果數據。
下面是執行:
using (var db = new FashionContext("schema1"))
{
foreach (var style in db.Styles)
{
Console.WriteLine(style.Name);
}
}
Console.ReadLine();
Console.Clear();
using (var db = new FashionContext("schema2"))
{
foreach (var style in db.Styles)
{
Console.WriteLine(style.Name);
}
}
Console.ReadLine();
後來我注意到,OnModelCreating被調用一次,所以當你創建相同的連接字符串的一個新的上下文實例它永遠不會再次調用。
是否有可能在運行時具有動態模式?注意:這是可能的EF6
這個問題是關於EF核心,但你的答案是EF6。這可能就是爲什麼它被壓低了。 – bricelam