【发布时间】:2024-01-22 16:37:01
【问题描述】:
我刚开始使用 LinqPad (v5),我喜欢它。
但我有一个问题。我从我的网络项目中成功导入了 EntityFramework 连接(ObjectContext),当我尝试实例化它时:
var db = new SISTEM.Models.DataModelContainer();
我收到以下错误:
The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
我已向 LinqPad.exe.config 和 LPRun.exe.config 添加了连接字符串(与 web.config 中的相同),但这没有帮助,我得到了同样的错误。
如果我像这样构建 EntityConnectionString:
var ecsb = new EntityConnectionStringBuilder();
ecsb.Provider = "System.Data.SqlClient";
ecsb.ProviderConnectionString = "Persist Security Info=True;Data Source=localhost;initial catalog=BASE;User ID=sa; Password=Elmlodge4;multipleactiveresultsets=True;App=EntityFramework";
ecsb.Metadata = "res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl";
var db = new SISTEM.Models.DataModelContainer(ecsb.ToString());
一切都像魅力一样。
大多数时候,就是这样。 直到我需要调用一个位于外部库中的函数,该函数又实例化我的 ObjectContext,期望配置中的连接字符串,该字符串未被拾取。
我希望我清楚地解释了我的问题,如果能帮助我解决问题,我将不胜感激。
更新:
来自我的网络配置的 sn-p:
<connectionStrings>
<add name="DataModelContainer" connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;provider=System.Data.SqlClient;provider connection string="Persist Security Info=True;Data Source=locahost;initial catalog=BASE;User ID=sa; Password=Elmlodge4;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
我只是将以上内容复制到 LinqPad 配置中,我不确定是否需要。
米洛斯
【问题讨论】:
-
你能显示 web.config 吗?连接字符串是“命名的”,名称应该匹配。
-
好的,我会更新一下
-
嗯...提供者不应该是
"System.Data.SqlClient"吗? -
我不是 EF 专家,但这看起来像是数据库优先上下文,而且配置不仅仅是连接字符串。尝试将 VS 配置文件中的所有 EF 内容放入 Linqpad 配置文件中。
-
@Stefan,我没有注意到差异,我已将 LinqPad 配置更改为 SqlClient 但没有任何改进。
标签: c# entity-framework linq connection-string linqpad