2011-12-24 45 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