问题主要内容如标题,可能表达的不是很清楚;
最近希望实现这么一个功能,就是当不同的用户登录系统时,根据用户登录的用户名,连接到同一个Oracle实例的不同Oracle表空间(PS:这里的用户名和表空间的关系可在程序启动时读取XML配置文件进行匹配),此处有点犯难,因为此前一直都是一个项目一个连接,没有太多的这方面的经验,问问各位园友是否有些思路,先多谢各位
之前一直在项目中用 EF ,貌似找了一些相关的资料,并未获得好的解决方案或思路
是不是根据登陆用户不同改变连接字符串,把连接字符串配到xml中,直接获取没什么难的呀?
谢谢回答,是直接配置,但是现在有一个问题就是,同一个项目里,每登录一个用户改一次,这个方法可能并不是理想的
希望是每个用户都独立一个配置,谁登录就加载谁的
@changwei0708: 把用户表中加个连接字符串的字段
config文件中 connectionStrings节点下,写多个连接字符串!
/// <summary> /// 请使用应用程序配置文件的“MyDBModel”部分中的连接字符串初始化新 MyDBModel对象。 /// </summary> public MyDBModel() : base("name=MyDBModel", "MyDBModel") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); }
谢谢你的回答,但是这里有个问题,我使用了EF,在EF自动生成的代码中,已经制定了config文件里的ConnectionString对应的name,例如上面MyDBModel,下方是其对应额ConnectionString
<add name="MyDBModel" connectionString="metadata=res://*/EntityModels.MyDBModel.csdl|res://*/EntityModels.MyDBModel.csdl.ssdl|res://*/EntityModels.MyDBModel.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=ORCL;PASSWORD=MyOracle;PERSIST SECURITY INFO=True;USER ID=123456"" providerName="System.Data.EntityClient" />
配置多个connectionStrings是可以共存于Config文件中,但是第一段代码中初始化MyDBModel已经指定了对应的ConnectionString的name了,这里就是我最犯难的地方,之前也考虑过配置多个字符串,就是在这里卡住了,找不到好的思路去解决这个读取不同字符串的方法,因为name已经写死在代码中,很感谢你的回答,不过这个地方我暂时没有找到读取不同不同配置字符串的方法
可以考虑使用反射,这只是我的一个思路
谢谢回答,这个方式也在目前的考虑范围,只是真正实施起来还没理清头绪,还得努力研究