例如,我有以下 DbContext 类。
public class AppDbContext : DbContext {
...
}
public class LogDbContext : DbContext {
...
}
public class FooDbContext : DbContext {
...
}
如果名为的连接字符串AppDbContext
位于App.Config
并且我希望其他 DbContext 类与 共享相同的连接字符串AppDbContext
,我是否可以将字符串“AppDbContext”作为ctor
ofLogDbContext
和的参数传递FooDbContext
。例如,
public class FooDbContext : DbContext {
public FooDbContext : base("AppDbContext") { }
}
它有任何副作用吗?
更新 2013/1/9
在尝试了@ShinH2S 的建议和一些东西之后,我放弃了这种方式,并决定给不同的 Dbcontext 派生类提供不同的连接字符串和数据库。我尝试了一个测试项目并将其放在 GitHub 上。AppDbContext
当实体框架检测到数据库方案因和FooDbContext
具有不同的模式而更改时,它将引发运行时异常。如果我DropCreateDatabaseIfModelChanges
为两个 DbContext 派生类分配一个策略,其中一个将被删除,因为模型与另一个不同。
2017/10 更新
这是一个老问题。在我的记忆中,EF6 and above versions
同一个迁移表中的多个上下文可以有不同的迁移历史。我更喜欢SO 的这个答案。我已经有 2 年没有使用 C# 编码了。