繁体   English   中英

具有实体框架的ASP.NET Core 2,在应用程序配置文件中找不到名为“ ####”的连接字符串

[英]ASP.NET Core 2 with Entity Framework, showing no connection string named '####' could be found in the application config file

我正在编写一个ASP.NET Core MVC应用程序。 我正在使用实体框架。 我有一个数据访问层,在这里我从设计的数据库中添加了edmx。 MVC项目正在引用此数据访问项目。

当我尝试从数据库访问某些内容时,会发生此错误:

处理请求时发生未处理的异常。

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

System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel()

我已经在数据访问项目和Core项目中都设置了连接字符串。 但是仍然出现此错误。

这是appsetting.json

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "**My DB Details**"
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

知道发生了什么吗?

由于您在.NET Framework库中使用EF 6,因此它可能正在web.config中查找。 因此,请按照以下说明将其放入web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection"
         connectionString="**My DB Details**" />
  </connectionStrings>
</configuration>

先前的答案(仅适用于EF Core):

.NET Core中的连接字符串应如下所示:

"ConnectionStrings": {
    "DefaultConnection": "**My DB Details**"
}

不是您现在拥有的"Data"节点。

当您拥有.NET Core Web项目并由EF6项目作为类库支持时,并不是那么简单。

为了使事情顺利进行,您可能必须:

  • .NET Core Web项目中的参考完整框架
  • 使用Factory模式向DbContext提供连接字符串
  • 通过环境变量共享两个项目中的连接字符串

.NET Core Web项目中手动创建一个web.config是不好的,因为在发布之前它没有一个。 然后将基于appsetting创建web.config

https://docs.microsoft.com/zh-cn/aspnet/core/data/entity-framework-6?view=aspnetcore-2.1是有关如何使.NET CoreEF6交流的文档。

由于时间不足,我不得不妥协。 我现在在ASP.NET Core项目中使用EF core,并且工作正常。 删除了数据访问层。 解决.NET Core的所有错误后,将使用它。

appjson.config做错了

"ConnectionStrings": {
      "DefaultConnection": "your connection string"
    }

删除数据标签,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM