【问题标题】:First Application using Code First EF 6.4.4 : SQL Server Connection error使用 Code First EF 6.4.4 的第一个应用程序:SQL Server 连接错误
【发布时间】:2020-11-08 01:01:06
【问题描述】:

我刚开始学习 EF(不是核心),并且正在创建我的第一个代码优先应用程序。这是一个 C# 控制台应用程序,我所做的只是添加一个迁移,然后简单地创建示例数据库(与我的解决方案同名)。当我尝试运行 Update-Database 时,我收到此错误:

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。)

我搜索并实施但仍无法解决此问题的步骤是:

  1. 我在 SQL Server 配置管理器中启用了 TCP/IP 端口
  2. 确保所有服务都在运行(浏览器、SQL Server)
  3. 在 Windows Defender 防火墙中添加了一个例外
  4. 选中复选框以允许“远程连接”

我的连接字符串是:

<add name="ConsoleDBContext" 
     connectionString="Data Source=(LocalDb)\SQLEXPRESS;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
     providerName="System.Data.SqlClient" />

也尝试删除“localDB”,但无济于事。

使用包管理器控制台在 C# 代码中遵循的步骤是:

  1. 安装包EntityFramework
  2. 启用迁移
  3. 添加迁移 CreatePost
  4. 更新数据库

如果在这方面提供任何帮助,我将不胜感激。

【问题讨论】:

    标签: c# sql-server ef-code-first entity-framework-6.4


    【解决方案1】:

    您的连接字符串中的服务器/实例名称相当奇怪......

    要么你的机器上安装了“完整”的 SQL Server Express - 当 Windows 启动并在后台作为服务运行时启动 - 在这种情况下,你应该使用 @ 987654321@ 或 (local)\SQLEXPRESS 作为您的服务器/实例名称:

    <add name="ConsoleDBContext" 
         connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
         providerName="System.Data.SqlClient" />
    

    或者,当您安装了 SQL Server Express LocalDB(随 Visual Studio 一起安装)时,您应该使用 (localdb)\MSSQLLocalDB 作为您的服务器/实例名称:

    <add name="ConsoleDBContext" 
         connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
         providerName="System.Data.SqlClient" />
    

    您现在使用的组合显然不正确 - 请尝试这两种组合中的一种,看看是否有效。

    【讨论】:

      【解决方案2】:

      您的程序无法访问您的服务器。如果您在同一台机器上运行数据库,那么您的连接字符串应如下所示:

      Data Source=.;Initial Catalog=<DB-Name>;User Id=<username>; Password=<pwd>;
      

      数据源是服务器的名称,“.”表示 localhost 或 127.0.0.1 Initial Catalog 是您的数据库名称,有时您可能会使用 master。 并且您不需要在同一台机器上配置 TCP/IP,除非您将数据库托管在其他机器上,那么数据源应该是 db-machinname\db-instance-name,如果实例名称是默认值name 然后你只需指定机器名称。

      【讨论】:

        【解决方案3】:

        谢谢大家!通过在“Update-Database”命令中明确输入启动项目名称(在我的情况下为“CodeFirst_Demo”),我的问题得到了解决。如下所示:

        更新数据库-StartupProjectName CodeFirst_Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 2017-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多