2015-10-14 62 views
0

我們在EF6開發REST服務,在數據庫中對於服務調用輸入多模式間我的應用程序切換。但我無法在EF與多個模式之間切換。多個模式之間切換與實體框架

我已經實現OnModelCreating,但其只叫一次。例如,我有用戶表,第一次會叫OnModelCreating與「schema1.user」,並在第二次時,我試着打「schema2.user」,它會返回「schema1.user」值

回答

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 
} 

以後,當你需要處理的要求,建立適當的上下文例如,根據請求參數。

+0

我使用通用代碼來創建模型。下面是我的代碼結構內部類DBContextConnection :的DbContext 其中T:類 { 公共DBContextConnection() :基部( 「連接」) { } 公共DbSet 模型{得到;組; } 保護覆蓋無效OnModelCreating(DbModelBuilder模型構建器) { base.OnModelCreating(模型構建器); modelBuilder.HasDefaultSchema(_schemaName); } \t \t} –

+0

@NajiAboo:其實,我不明白,你想與您的評論說什麼。通用代碼,好的。所以呢? – Dennis