我刚刚开始使用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="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配置中,我不确定是否需要。
米洛斯
答案 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