首页 新闻 会员 周边

entity framework 多个数据库连接怎么处理

0
悬赏园豆:5 [已关闭问题] 关闭于 2017-12-18 17:40

需求,一套系统,多个公司使用,但需要做公司数据分离,但是数据结构一样

如下:

A公司数据库

B公司数据库

C公司数据库

另外有一个总表,来存用户所属的公司和数据库名称

用户登陆系统,查询用户名后,根据数据库名来决定连接那个数据库

求多数据库连接思路

 

beggar_的主页 beggar_ | 初学一级 | 园豆:10
提问于:2016-09-27 17:55
< >
分享
所有回答(4)
0

写sql语句  [库名].[dbo].表名

ps:同一个服务器上可以这么写

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-09-27 18:05

写纯SQL就体现不了EF的作用了

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-09-28 09:16
0

多个dbcontext单独管理,

如果必须需要跨库查询这种业务,可以院子里面搜一下解决方案,同义词方式

czd890 | 园豆:14412 (专家六级) | 2016-09-28 01:07

一个数据库一个dbcontext是能解决问题,但是不觉得这一点都科学么,如果一个数据库改了,如果我有十个公司就要改十个dbcontext,这个工作量太大了,不是我想要的

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-11-28 17:03

@beggar_: 

new dbcontext(conn1);

new dbcontext(conn2);

new dbcontext(conn3);

也是可以的呀。你不是说结构都完全一致么,那意味着是一套entity咯

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-11-28 19:15
0

 用户登录之后、判断是所属那个公司、那这里肯定有个公司表、那公司表肯定要关联一个数据库的连接地址。dbcontext 只有一个 你只是把连接地址传这个DbContext

在 水 一 方 | 园豆:1097 (小虾三级) | 2016-10-20 17:16

我测试了一下,dbcontext在项目初始化时就加载了,里面的数据连接不能动态的配置,采用一个dbcontext还是没有找到好的解决方法

支持(0) 反对(0) beggar_ | 园豆:10 (初学一级) | 2016-11-28 17:01
0

使用时直接初始化 connectstring:

string GetEntityConnectionString(string edmxFullName, string server, string dadaBase, string usr, string pswd, string appName)
{        
System.Data.EntityClient.EntityConnectionStringBuilder entityConnectionStringBuilder = new System.Data.EntityClient.EntityConnectionStringBuilder();
entityConnectionStringBuilder.Metadata = "res://*/" + edmxFullName + ".csdl|res://*/" + edmxFullName + ".ssdl|res://*/" + edmxFullName + ".msl";
entityConnectionStringBuilder.Provider = "System.Data.SqlClient";
SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder();
sqlConnectionStringBuilder.DataSource = server;
sqlConnectionStringBuilder.InitialCatalog = dadaBase;
sqlConnectionStringBuilder.IntegratedSecurity = true;
sqlConnectionStringBuilder.UserID = usr;
sqlConnectionStringBuilder.Password = pswd;
sqlConnectionStringBuilder.MultipleActiveResultSets = true;
sqlConnectionStringBuilder.ApplicationName = appName;
entityConnectionStringBuilder.ProviderConnectionString = sqlConnectionStringBuilder.ToString();

return entityConnectionStringBuilder.ConnectionString;
}

 
 
转自CSDN 
肖恩部落 | 园豆:585 (小虾三级) | 2017-12-13 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册