C# 使用代码优先EF 6.4.4的第一个应用程序:SQL Server连接错误

C# 使用代码优先EF 6.4.4的第一个应用程序:SQL Server连接错误,c#,sql-server,ef-code-first,entity-framework-6.4,C#,Sql Server,Ef Code First,Entity Framework 6.4,我刚开始学习EF(不是核心),并正在创建我的第一个代码优先应用程序。这是一个C#控制台应用程序,我所做的只是添加迁移,然后简单地创建示例数据库(与我的解决方案同名)。当我尝试运行更新数据库时,出现以下错误: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅Windows应

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

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

我搜索并实施的但仍无法解决的步骤有:

  • 我在SQL Server配置管理器中启用了TCP/IP端口
  • 确保所有服务都在运行(浏览器、SQL Server)
  • 在Windows Defender防火墙中添加了异常
  • 选中复选框以允许“远程连接”
  • 我的连接字符串是:

    <add name="ConsoleDBContext" 
         connectionString="Data Source=(LocalDb)\SQLEXPRESS;Initial Catalog=CodeFirst_Demo;Integrated Security=SSPI;" 
         providerName="System.Data.SqlClient" />
    
    
    
    还尝试删除“localDB”,但没有效果

    在使用Package Manager控制台的C#代码中遵循的步骤是:

  • 安装包EntityFramework
  • 启用迁移
  • 添加迁移CreatePost
  • 更新数据库

  • 我将非常感谢您在这方面提供的任何帮助。

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

    Data Source=.;Initial Catalog=<DB-Name>;User Id=<username>; Password=<pwd>;
    
    数据源=。;初始目录=;用户Id=;密码=;
    
    数据源是服务器的名称,“.”表示本地主机或127.0.0.1 初始目录是您的数据库名称,有时您可以使用master。
    您不需要在同一台机器上配置TCP/IP,除非您在另一台机器上托管数据库,否则数据源应为db machinname\db instance name,同样,如果实例名称是默认名称,则只需指定机器名称。

    连接字符串中的服务器/实例名称非常奇怪

    或者您的计算机上安装了“完整”的SQL Server Express—当Windows启动并在后台作为服务运行时启动的SQL Server Express—在这种情况下,您应该使用
    \SQLEXPRESS
    (本地)\SQLEXPRESS
    作为服务器/实例名称:

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

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

    谢谢大家!通过在“更新数据库”命令中显式输入启动项目名称(在我的示例中为“CodeFirst_Demo”),我的问题得到了解决。如下图所示:

    更新数据库-StartupProjectName CodeFirst\u演示