【问题标题】:Linqpad and picking up configuration strings from external librariesLinqpad 并从外部库中获取配置字符串
【发布时间】: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=&quot;Persist Security Info=True;Data Source=locahost;initial catalog=BASE;User ID=sa; Password=Elmlodge4;multipleactiveresultsets=True;App=EntityFramework&quot;" 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


【解决方案1】:

你提到了 linqpad.exe.config,但你应该使用 linqpad.config

来自FAQ

我正在引用从应用程序配置文件 (app.config) 读取设置的自定义程序集。如何告诉 LINQPad 将其用于我的查询?

最简单的方法是打开查询属性对话框 (F4) 并单击 app.config 选项卡。

或者,您可以在与 LINQPad.exe 相同的文件夹中创建一个名为 linqpad.config 的文件。您在此处放置的任何内容都适用于所有查询(除非您在上面的对话框中覆盖它)。不要将 linqpad.config 与 linqpad.exe.config 混淆:

linqpad.config 供您查询。

linqpad.exe.config 用于 LINQPad GUI

【讨论】:

    最近更新 更多