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