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

时间:2015-05-06 18:35:23

标签: c# entity-framework asp.net-web-api

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

然后,我使用类文件创建实体模型,然后创建数据库上下文,然后创建存储库。我正在调用WebApi(在一个单独的项目中,但是在相同的解决方案中)来访问存储库以获取GET数据。当我运行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" 

9 个答案:

答案 0 :(得分:38)

在DBContext文件中,删除

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

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

EF 4.3,EF 5和EF 6不喜欢名为name = xxxxx

的连接字符串

在此处找到答案 - > No connection string named 'MyApplicationEntities' could be found in the application config file

答案 1 :(得分:13)

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

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

答案 2 :(得分:1)

在.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>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

我发现这很有效:

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

现在应该可以了。

答案 4 :(得分:1)

如果以上方法均不能解决问题,则可能是您犯了我的错误,这是我的情况: 我的解决方案中有多个项目,而启动项目不同于具有实体框架的项目,因此从程序包管理器控制台切换项目似乎是一件有问题的事情,尤其是在实体框架命令中,所以在这里我做了什么:

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

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

答案 5 :(得分:0)

最简单的解决方案:

  

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

这对我有用。

答案 6 :(得分:0)

将连接字符串复制并粘贴到WEBAPI Project web.config文件将解决问题。

答案 7 :(得分:0)

这很愚蠢,但是我遇到了一个由Rebuild All修复的错误!!
可能还要将其关闭然后再打开。...

答案 8 :(得分:0)

将项目设置为Startup项目对我有用