Sql server “背景”;“登录失败”&引用;错误编号:4060,状态:1,类别:11“;

Sql server “背景”;“登录失败”&引用;错误编号:4060,状态:1,类别:11“;,sql-server,asp.net-core,asp.net-core-mvc,entity-framework-core,localdb,Sql Server,Asp.net Core,Asp.net Core Mvc,Entity Framework Core,Localdb,我的ASP.NET MVC核心应用程序应该通过实体框架连接到现有的MSSQL LocalDB文件 数据库优先开发需要对现有数据库进行反向工程。 按照中的说明,我正在NuGet Package Manager控制台中运行以下命令: Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServ

我的ASP.NET MVC核心应用程序应该通过实体框架连接到现有的MSSQL LocalDB文件

数据库优先开发需要对现有数据库进行反向工程。 按照中的说明,我正在NuGet Package Manager控制台中运行以下命令:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
然而,我得到

No design-time services were found.
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "DatabaseName" requested by the login. The login failed.
Login failed for user 'MACHINE-NAME\UserName'.
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)

Error Number:4060,State:1,Class:11
Cannot open database "DatabaseName" requested by the login. The login failed.
Login failed for user 'MACHINE-NAME\UserName'.
由于“登录失败”可能表示找不到数据库,因此我决定在VisualStudioServerExplorer中复制粘贴连接字符串,通过右键单击数据库并选择“属性”找到该字符串

因此,新的命令是

Scaffold-DbContext "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\...AbsolutePath...\DatabaseFileName.mdf;Integrated Security=True;Connect Timeout=30" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -verbose
而且。。。成功了。 因此:

  • 我没有使用
    服务器
    ,而是使用了
    数据源
  • 我没有使用数据库名,而是编写了LocalDb文件的完整路径

  • 对我有效的方法是按如下方式指定命令:

    Scaffold-DbContext "Data Source={MY-COMPUTER-NAME};Initial Catalog={DATABASE-NAME};Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    

    用Studio的服务器资源管理器中的值替换{MY-COMPUTER-NAME}和{DATABASE-NAME}。我正在计算机上运行SQL Server(不是Express)。

    根据其他线程,您的密码可能包含特殊字符,如$

    参考: