【发布时间】:2016-05-12 07:44:27
【问题描述】:
根据用户在运行时的选择,我的数据库有不同的架构。
我的代码如下:
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 中是可能的
【问题讨论】:
标签: entity-framework