例如,我有以下DbContext类。
public class AppDbContext : DbContext {
...
}
public class LogDbContext : DbContext {
...
}
public class FooDbContext : DbContext {
...
}
如果名为AppDbContext
的连接字符串在App.Config
上,并且我希望其他DbContext类与AppDbContext
共享相同的连接字符串,我是否可以将字符串“AppDbContext”作为ctor
LogDbContext
和FooDbContext
的{{1}}参数。例如,
public class FooDbContext : DbContext {
public FooDbContext : base("AppDbContext") { }
}
它有副作用吗?
在尝试了@ ShinH2S的建议和事情之后,我放弃了这种方式,并决定使用不同的connectionStrings和数据库给出不同的Dbcontext派生类。我试过a test project and put it on GitHub。当entityframework检测到数据库方案发生更改时,它将抛出运行时异常,因为AppDbContext
和FooDbContext
具有不同的模式。如果我为两个DbContext派生类分配DropCreateDatabaseIfModelChanges
策略,则会删除其中一个,因为模型与另一个不同。
这是一个老问题。在我的记忆中,EF6 and above versions
可以在同一个迁移表中为多个上下文提供不同的迁移历史记录。
我更喜欢this answer at SO。我用C#编写了大约2年的编码。
答案 0 :(得分:5)
BaseDbContext
的基类,那么所有上下文(AppDbContext
,LogDbContext
和FooDbContext
)将派生自{{ 1}}。