我的MSSQL核心应用程序应该通过实体框架连接到现有的ASP.NET 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'.发布于 2018-02-12 05:24:03
由于"Login failed“可能表示找不到数据库,因此我决定将连接字符串复制粘贴到Visual Studio Server Explorer中,方法是右键单击数据库并选择"Properties”。
所以新的命令是
Scaffold-DbContext "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\...AbsolutePath...\DatabaseFileName.mdf;Integrated Security=True;Connect Timeout=30" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -verbose还有..。啊,真灵。所以:
我使用的是Data Source
Server,我写下了LocalDb文件的完整路径发布于 2018-06-26 08:02:14
对我来说起作用的是指定如下命令:
Scaffold-DbContext "Data Source={MY-COMPUTER-NAME};Initial Catalog={DATABASE-NAME};Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models将{MY-COMPUTER-NAME}和{DATABASE-NAME}替换为Studio的服务器资源管理器中的值。我的计算机上正在运行SQL Server (不是Express)。
发布于 2019-09-19 14:58:04
根据其他线程,您的密码可能包含特殊字符,如$,
参考:Entity Framework Scaffold-DbContext Login failed for user
https://stackoverflow.com/questions/48736620
复制相似问题