2011-12-24 79 views
2

大家下午好,我遇到了一個問題,從使用C#和Linq to Entities的兩個連接字符串中進行選擇。目前我有兩個連接字符串,它們是:如何從兩個連接字符串中選擇?

<add name="GameHutDBEntities1" connectionString="metadata=res://*/GameHutModel.csdl|res://*/GameHutModel.ssdl|res://*/GameHutModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=EMMANUEL-PC\SQLEXPRESS;Initial Catalog=GameHutDB;user id=GameHutAdmin; password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
<add name="GameHutDBEntities2" connectionString="metadata=res://*/GameHutModel.csdl|res://*/GameHutModel.ssdl|res://*/GameHutModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=EMMANUEL-PC\SQLEXPRESS;Initial Catalog=GameHutDB;user id=test; password=1234;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

我有兩個角色,分別是Admin和Clerk。我如何允許管理員使用第一個連接字符串登錄,而職員將使用第二個連接字符串登錄?

enter image description here

+0

http://stackoverflow.com/questions/1257107/entity-framework-to-multiple-databases-same-schema-at-runtime – Oded 2011-12-24 15:35:10

回答

5

this answer改編:

string connString; 

if(IsAdmin(user)) 
    connString = ConfigurationManager.ConnectionStrings["GameHutDBEntities1"]; 
else 
    connString = ConfigurationManager.ConnectionStrings["GameHutDBEntities2"]; 

using(EntityConnection con = new EntityConnection(connString)) 
{ 
    using (Entities context = new Entities(con)) 
    { 
     // Some code here 
    } 
} 

IsAdmin是一個函數採取user,如果他是一個管理員返回true和false如果不。

+0

我正在使用三層模型,請問我需要把這個代碼放在哪裏?並感謝您回答我的問題! – user1114676 2011-12-24 15:41:03

+0

@ user1114676 - 這將在數據訪問層,但我會通過UI作爲依賴關係傳遞連接字符串(或布爾值,指示用戶是管理員或不是管理員),作爲依賴關係(您不希望硬編碼依賴於'ConfigurationManager'到你的數據訪問層 – Oded 2011-12-24 15:42:45

+0

[IMG] http://i39.tinypic.com/34qmybs.jpg [/ IMG] – user1114676 2011-12-24 15:50:14

2
var conn = new EntityConnection(); 
conn.StoreConnection.ConnectionString = ConfigurationManager.ConnectionStrings["GameHutDBEntities2"]; 

this.Entities = new KurtDBEntities(conn); 
+0

我正在與三層模型,我需要把這個代碼放在哪裏?並感謝您回答我的問題! - – user1114676 2011-12-24 15:41:57

+1

無論你如何使用實體,只需將連接作爲參數傳遞即可。 – 2011-12-24 15:46:09

+0

[IMG] i39.tinypic.com/34qmybs.jpg [/ IMG]這一個? – user1114676 2011-12-24 15:52:57