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

C# 在应用程序配置文件中找不到名为的连接字符串,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,我正在使用EF并从中生成.EDMX,但我只想将其用于自动生成类文件 然后,我使用类文件创建了一个实体模型,然后创建了一个DB上下文,然后创建了存储库。我正在调用一个WebApi(它位于一个单独的项目中,但属于同一个解决方案)来访问存储库以获取数据。当我运行WebApi时,我得到了错误 {“在应用程序配置文件中找不到名为'DBEntities'的连接字符串。”} 但在我的DAL中,我有一个网络配置,其中有以下条目,所以我不太确定出了什么问题 add name="DBEntities" connec

我正在使用EF并从中生成.EDMX,但我只想将其用于自动生成类文件

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

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

但在我的DAL中,我有一个网络配置,其中有以下条目,所以我不太确定出了什么问题

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" 
你说“在我的DAL中,我有一个网络配置”。我猜连接字符串在引用类库的配置文件中,但不在条目项目(我猜是web api项目,查看标记)中的主配置文件中


如果是这样,只需复制条目项目配置文件中的连接字符串。

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

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


我发现这很有效:

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

现在应该可以使用了。

最简单的解决方案:

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


这对我很有效。

将connectionstring复制并粘贴到您的WEBAPI项目web.config文件将解决此问题。

在DBContext文件中,删除

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

EF 4.3、EF 5和EF 6不喜欢将连接字符串命名为name=xxxxx


在这里找到答案->

这很愚蠢,但是我有一个错误,这个错误被一个
重建所有的
修复了

还不如将其关闭并再次打开……

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

如果上述任何一项都不能解决问题,那么您可能犯了我犯的错误,我的情况如下: 我的解决方案中有多个项目,启动项目不同于具有实体框架的项目,从package manager控制台切换项目似乎有问题,尤其是在实体框架命令中,因此我所做的是:

  • 将webapi(或项目具有实体框架)设置为启动项目
  • 重新生成解决方案,然后重试
  • 再次运行实体框架命令

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

    很抱歉,它有标签,因此由于格式问题而无法显示。我已删除标记及其位置请检查我的更新,如果它解决了您的问题,请接受作为答案:)我确实向webapi添加了连接字符串,现在得到以下结果,{指定的架构无效。错误:\r\n CLR类型到EDM类型的映射不明确,因为多个CLR类型与EDM类型客户端匹配}这有帮助吗?请在DAL项目中将web配置重命名为app.config。如果您向构造函数提供
    name=xxx
    ,它将查找特定的连接字符串,如果未设置,将抛出错误。如果您未指定
    name=xxx
    ,localdb/sqlexpress将尝试创建它。同样,我正在进行代码混合从Package Manager控制台,它在app.config中找不到我的连接字符串,因为它正在读取另一个项目的app.config。
    public RaficaDB()
    : base("DefaultConnection"){}