我们正在开发EF6中的REST服务,我的应用程序在数据库中的多个模式之间切换服务调用输入。但我无法在多个模式与EF之间切换。
我已经实现了OnModelCreating
,但它只调用了一次。例如,我有用户表,第一次用" schema1.user"来调用OnModelCreating
。并且在我第二次尝试调用" schema2.user"时,它将返回" schema1.user"值
答案 0 :(得分:0)
EF缓存为生产力目的创建的模型。这就是每个应用域和上下文类型调用OnModelCreating
一次的原因。
要实现您想要的目标,您可以建立DbContext
后代的
class MyDbContextBase : DbContext
{
public DbSet<User> Users { get; set; }
// other code here;
// DO NOT override OnModelCreating in this class
}
class MyDbContextA : MyDbContextBase
{
// override OnModelCreating here;
// e.g. map Users to schema1.user table
}
class MyDbContextB : MyDbContextBase
{
// override OnModelCreating here;
// e.g. map Users to schema2.user
}
稍后,当您需要处理请求时,根据请求参数创建适当的上下文实例。