La mia applicazione principale ASP.NET MVC deve connettersi a un file MSSQL LocalDB esistente tramite Entity Framework.
Lo sviluppo del database-first richiede il reverse engineering del database esistente. Seguendo le istruzioni nella documentazione ufficiale , eseguo il seguente comando nella console Gestore pacchetti NuGet:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Comunque sto ricevendo
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'.
Poiché "Accesso non riuscito" potrebbe indicare che il database non può essere individuato, ho deciso di copiare e incollare la stringa di connessione in Visual Studio Server Explorer, rilevata facendo clic con il pulsante destro del mouse sul database e selezionando "Proprietà".
Quindi il nuovo comando era
Scaffold-DbContext "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\...AbsolutePath...\DatabaseFileName.mdf;Integrated Security=True;Connect Timeout=30" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -verbose
e ... ha funzionato. Così:
Server
, ho usato Data Source
Come per altri thread, la tua password potrebbe contenere caratteri speciali come $,
Riferimento: Accesso Scaffold-DbContext di Entity Framework non riuscito per l'utente