【问题标题】:No connection string named could be found in the application config file在应用程序配置文件中找不到命名的连接字符串
【发布时间】:2015-07-17 01:44:39
【问题描述】:

我正在使用 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


【解决方案1】:

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

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

【讨论】:

  • 我确实将连接字符串添加到 webapi,现在得到以下信息,{"指定的架构无效。错误:\r\nCLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型匹配EDM类型Client}
【解决方案2】:

在 .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>

【讨论】:

  • 请在 DAL 项目中将 web 配置重命名为 app.config。
【解决方案3】:

我发现这行得通:

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

它现在应该可以工作了。

【讨论】:

    【解决方案4】:

    最简单的解决方案:

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

    这对我有用。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        在 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

        【讨论】:

        【解决方案7】:

        这很愚蠢,但我遇到了这个由Rebuild All 修复的错误!!
        还不如把它关掉再打开....

        【讨论】:

          【解决方案8】:

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

          【讨论】:

          • 同样;我正在从包管理器控制台进行代码迁移,它在 app.config 中找不到我的连接字符串,因为它正在读取不同项目的 app.config。
          【解决方案9】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-06-14
            • 2016-12-07
            • 2012-09-19
            • 2022-01-11
            • 1970-01-01
            • 2013-03-28
            • 2017-02-06
            相关资源
            最近更新 更多