2016-03-03 64 views
0

我們推薦(由Microsoft專家)在單個數據庫中使用數據庫模式,而不是爲我們服務的每個客戶使用單獨的數據庫。 我們目前正在使用數據庫第一種方法。 。實體框架數據庫首先:在運行時模式下連接到特定的數據庫模式

用戶的故事:當我登入從公司1傢伙,頁上的「倉庫我從表u1.Warehouses信息公司2 - u2.Warehouses等

問題:具有模式名稱爲特定用戶,我們如何才能建立連接到運行模式下使用實體框架連接到that_schema_name.Table_name? 謝謝!

回答

0

取決於記錄的用戶和他的成員角色,公司,或任何你在你的定義應用程序,您可以有條件地設置架構。波紋管我提供了樣本如果控制流程施工和IsInRole方法從CurrentPrincipal,顯然這可能不是你的最終解決方案,但應該把你在賽道:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 

    base.OnModelCreating(modelBuilder); 
    if (Thread.CurrentPrincipal.IsInRole("Foo")) 
     modelBuilder.HasDefaultSchema("that_schema_name"); 
    else 
     modelBuilder.HasDefaultSchema("other_schema_name"); 

    ... 
} 
+0

謝謝!我們已經嘗試過了。但是OnModelCreating方法似乎只用於CodeFirst方法,我們已經得到了DatabaseFirst。 –

+0

這是不正確的。您也可以使用OnModelCreating與DatabaseFirst。 –

+0

我們再次嘗試過您的解決方案。不幸的是,事件處理程序沒有被調用:( –

相關問題