Linqpad并从外部库中获取配置字符串

时间:2018-08-14 11:49:26

标签: c# entity-framework linq connection-string linqpad

我刚刚开始使用LinqPad(v5),我喜欢它。

但是我有一个问题。我从Web项目中成功导入了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并期望从配置中获取连接字符串,而该字符串不会被提取。

希望我能清楚地说明我的问题,并希望能为解决该问题提供帮助。

更新:

我的网络配置中的代码段

<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配置中,我不确定是否需要。

米洛斯

1 个答案:

答案 0 :(得分:0)

您提到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