我将我的数据访问层从使用LINQ切换到了Entity Framework。由于我的应用程序要根据当前用户连接到不同的数据库,因此我需要在运行时动态创建DataContext并传入适当的连接字符串。然而,当我尝试使用旧的连接字符串编程方式创建一个Entity Framework连接时,连接失败了。它抱怨说它无法识别连接字符串中的关键字,具体来说是"server"。
我发现为了让Entity Framework连接生效,我需要做以下操作:
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());
为什么会这样呢?元数据属性是什么用途?它始终对于多个不同的连接而言都是相同的,这会成为问题吗?应该是什么呢?有没有什么方法可以解决这个问题?提前感谢您!
更新1: 谢谢您的更新,Randolpho,但是…… 我遇到这个问题的整个原因在于,我无法将连接字符串存储在配置文件中。连接字符串是由连接的用户在运行时动态确定的。
以下是我的确切情况: 如果用户A正在连接,则应用程序从数据库A中提取数据。如果用户B正在连接,则应用程序从数据库B中提取数据。 连接字符串存储在主数据库中,数量可能是无限的。每次添加用户时,我都不想进入web.config,更别说这会变得非常大!