sql-server - 脚手架-DbContext "Login Failed" "Error Number:4060,State:1,Class:11"

标签 sql-server asp.net-core asp.net-core-mvc entity-framework-core localdb

我的 ASP.NET MVC 核心应用程序应该通过 Entity Framework 连接到现有的 MSSQL LocalDB 文件。

数据库优先开发需要对现有数据库进行逆向工程。
按照 official documentation 中的说明进行操作,我在 NuGet 包管理器控制台中运行以下命令:

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'.

最佳答案

由于“登录失败”可能表示无法找到数据库,我决定在 Visual Studio Server Explorer 中复制粘贴连接字符串,通过右键单击数据库并选择“属性”找到。

所以新的命令是

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

而且……它奏效了。
所以:
  • 而不是 Server , 我用过 Data Source
  • 我没有使用数据库名称,而是写了 LocalDb 文件的完整路径
  • 关于sql-server - 脚手架-DbContext "Login Failed" "Error Number:4060,State:1,Class:11",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48736620/

    相关文章:

    c# - .NET CORE MVC ViewComponent xUnit 测试

    sql - 查找具有相同id的记录并放在同一行

    c# - 如何在 ASP.NET Core 中获取 HttpContext.Current?

    c# - IIS 服务器上的 Entity Framework Core 和 Windows 身份验证

    c# - 在 Asp.net Core 中获取 UserManager 类的对象?

    c# - ASP.NET Core 上的 Authorize.Net 集成

    sql - System.Data.SqlClient 和 SQLNCLI10.1 提供程序之间有什么区别?

    sql-server - SQL Server 使用查询计算运行总值

    sql-server - 合并两个表并覆盖先前存在的行

    iis - 发布到 IIS。省略在服务器上安装 .NET Core Windows Server Hosting bundle