在应用程序配置文件中找不到名为的连接字符串

问题描述 投票:0回答:10

我正在使用 EF 并从中生成 .EDMX,但后来我只希望它用于自动生成类文件。

然后,我使用类文件创建实体模型,然后创建数据库上下文,然后创建存储库。我正在调用 WebApi(位于单独的项目但相同的解决方案中)来访问存储库以获取数据。当我运行 WebApi 时,我收到错误,

{“在应用程序配置文件中找不到名为“DBEntities”的连接字符串。”}

但是在我的 DAL 中,我有一个 webConfig 并且具有以下条目,所以我不太确定出了什么问题,

add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" 
c# entity-framework asp.net-web-api
10个回答
53
投票

在 DBContext 文件中,删除

public RaficaDB()
: base("name=DefaultConnection"){}

public RaficaDB()
: base("DefaultConnection"){}

EF 4.3、EF 5 和 EF 6 不喜欢连接字符串被称为 name=xxxxx

在这里找到答案 -> 在应用程序配置文件中找不到名为“MyApplicationEntities”的连接字符串


17
投票

你说“在我的 DAL 中,我有一个 webConfig”。我猜想连接字符串位于引用的类库的配置文件中,但不在您的入门项目(一个Web api项目,我想查看标签)中的主配置文件中。

如果是,只需复制入口项目配置文件中的连接字符串即可。


4
投票

在 .edmx 文件所在的同一项目的 .config 文件的配置部分中插入以下部分。

您还可以在主项目的.config文件中为不同的环境创建不同的连接字符串,并将任何连接字符串作为DBContext构造函数的参数传递。

<connectionStrings>
  
<add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

</connectionStrings>


3
投票

将项目设置为启动项目对我有用


2
投票

我发现这有效:

1) 检查您是否有多个“App.config”文件。 2)检查是否有比它必须使用的连接字符串错误的名称。 3)保存项目并运行程序

现在应该可以工作了。


1
投票

将连接字符串复制并粘贴到您的 WEBAPI 项目 web.config 文件中即可解决该问题。


1
投票

这很愚蠢,但我遇到了这个错误,已被

Rebuild All
!!
修复了 最好把它关掉然后再打开......


1
投票

如果上述方法都不能解决问题,那么您可能犯了我犯过的错误,这是我的情况: 我的解决方案中有多个项目,并且启动项目与具有实体框架的项目不同,从包管理器控制台切换项目似乎是一件有问题的事情,尤其是在实体框架命令中,所以我做了以下事情:

  1. 将你的webapi(或者项目有实体框架)设置为启动项目。
  2. 重建解决方案并重试。
  3. 再次运行实体框架命令。

如果上述方法不起作用,请尝试关闭解决方案并从步骤 2 开始尝试,这应该可以解决问题。


0
投票

最简单的解决方案:

删除app.config中当前的edmx文件和相关连接字符串 并再次添加与之前名称相同的 Edmx 项目。

这对我有用。


0
投票

仔细检查您的 /bin/ 文件夹,以确保您构建的应用程序的配置(例如 Foo.exe.config)具有您期望的连接字符串。

如果它缺失,但存在于您的 App.config 中,则在解决方案资源管理器中,检查该 App.config 文件的属性。确保“复制到输出目录”不是“不复制”。例如,尝试 “始终复制”。然后重建。

如果您从其他项目复制 App.config 文件,这可能会被意外设置为“不复制”。

© www.soinside.com 2019 - 2024. All rights reserved.