代码之家  ›  专栏  ›  技术社区  ›  Sanish Joseph

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

  •  1
  • Sanish Joseph  · 技术社区  · 7 年前

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

    当我尝试从DB访问某些内容时,会发生以下错误:

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

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

    我已经在数据访问项目和核心项目中设置了连接字符串。

    这是 appsetting.json :

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

    知道发生了什么吗?

    4 回复  |  直到 7 年前
        1
  •  2
  •   David Liang    7 年前

    .NET Core web项目,并由 EF6 项目作为类库。

    • 参考完整的框架 .NET核心 网络项目
    • Factory 模式 DbContext
    • 在两个项目中共享连接字符串,可能通过环境变量

    web.config .NET核心 web项目很糟糕,因为在发布之前它没有一个。这个 web.config 届时将根据 appsetting .

    https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6?view=aspnetcore-2.1 .NET核心 EF6 说话。

        2
  •  1
  •   Gabriel Luci    7 年前

    由于您在.NET Framework库中使用EF 6,因此它可能在web.config中查找。所以把它放在web.config中 as described here

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

    先前的回答(针对纯EF核心):

    Connection strings in .NET Core 应该是这样的:

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

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

        3
  •  -2
  •   Ivan Stefner    7 年前

    appjson.config错误,请执行此操作

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

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

        4
  •  -3
  •   Sanish Joseph    7 年前