0
我們在EF6開發REST服務,在數據庫中對於服務調用輸入多模式間我的應用程序切換。但我無法在EF與多個模式之間切換。多個模式之間切換與實體框架
我已經實現OnModelCreating
,但其只叫一次。例如,我有用戶表,第一次會叫OnModelCreating
與「schema1.user」,並在第二次時,我試着打「schema2.user」,它會返回「schema1.user」值
我們在EF6開發REST服務,在數據庫中對於服務調用輸入多模式間我的應用程序切換。但我無法在EF與多個模式之間切換。多個模式之間切換與實體框架
我已經實現OnModelCreating
,但其只叫一次。例如,我有用戶表,第一次會叫OnModelCreating
與「schema1.user」,並在第二次時,我試着打「schema2.user」,它會返回「schema1.user」值
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
}
以後,當你需要處理的要求,建立適當的上下文例如,根據請求參數。
我使用通用代碼來創建模型。下面是我的代碼結構內部類DBContextConnection:的DbContext 其中T:類 { 公共DBContextConnection() :基部( 「連接」) { } 公共DbSet 模型{得到;組; } 保護覆蓋無效OnModelCreating(DbModelBuilder模型構建器) { base.OnModelCreating(模型構建器); modelBuilder.HasDefaultSchema(_schemaName); } \t \t} –
@NajiAboo:其實,我不明白,你想與您的評論說什麼。通用代碼,好的。所以呢? – Dennis