2014-03-26 35 views
0

我有一個三個字段公司(選擇列表),區域(選擇列表)和細節(輸入框)的窗體。公司列表選項正在從主數據庫(MasterDb)的公司表(可能的值爲CompanyXX和CompanyYY)中填充。Asp.Net MVC代碼優先:從不同的數據庫填充下拉選項

<connectionStrings> 
    <add name="DefaultConnection" connectionString="" /> 
    <add name="CompanyXX" connectionString="" /> 
    <add name="CompanyYY" connectionString=" />  
    </connectionStrings> 

public class Company 
{ 
    [Required] 
    [KeyAttribute] 
    public int Id { get; set; } 
    [StringLength(100)] 
    public string Name { get; set; } 
} 

public class Area 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public Nullable<bool> Active { get; set; } 

    } 

我想根據公司Selected從不同的數據庫填充區域選擇列表。例如,如果我在下拉列表中選擇CompanyXX,它應該從web.config中選擇另一個連接字符串(每個公司在數據庫中都有自己的連接字符串),並從該數據庫中獲取區域列表。我可以執行ajax調用來從相同數據庫動態加載區域列表,但不能從不同數據庫中加載。你能幫忙嗎?這可能會動態改變連接字符串嗎?

回答

1

這是唯一可能的,如果你在所有不同的數據庫中具有相同的數據庫結構。通過這種方式,您必須在創建用於進行查詢的DbContext對象時傳遞連接字符串名稱。

if(CompanyXX) 
    { 
    YouDbContext context = new YourDbContext("CompanyXX"); 
    var areas = context.Areas.All(); 
    } 

    else if(CompanyYY) 
    { 
    YouDbContext context = new YourDbContext("CompanyYY"); 
    var areas = context.Areas.All(); 
    } 

確保您已在web.config中相應地設置連接字符串名稱。


其他情況下,如果你有不同的數據庫結構,你必須創建三個不同的實體框架數據模型(.edmx文件)。

+0

謝謝Ish。有效。 – sanjeev