我将我的 DAL 从使用 LINQ 切换到 Entity Framework 。因为我的应用程序根据当前用户连接到不同的数据库,所以我需要在运行时动态创建 DataContext 并传入适当的连接字符串。但是,当我尝试使用我的旧连接字符串以编程方式创建 Entity Framework 连接时,连接失败。它提示说它无法识别连接字符串中的 key ,准确地说是“服务器”。
我发现我需要这样做才能使 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,更不用说它最终会变得巨大!
最佳答案
扩展 Randolpho 的回答:
元数据属性专门指向 .SSDL(存储模型)、.CSDL(概念模型)和 .MSL(映射模型)文件的位置。这三个文件本质上是实体数据模型。 “res://”URI 样式限定符指示文件作为资源嵌入到已编译的 EDM 程序集中。
关于database - 为什么 Entity Framework 连接需要元数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/496856/