Dos consejos más importantes:
[1] - Asegúrese de que su proyecto se compile por completo antes de ejecutar un nuevo comando de andamio.
De otra manera...
- Empezarás a escribir una línea de código.
- Se dará cuenta de que falta una columna de base de datos requerida en su modelo.
- Irás a intentar montarlo.
- Veinte minutos después, se dará cuenta de que la razón por la que su compilación (y el comando de scaffold) está fallando es porque literalmente tiene una línea de código escrita a medias. ¡Ups!
[2] - Verifique el control de fuente o haga una copia:
- Le permite verificar fácilmente qué cambió.
- Permite la reversión si es necesario.
Puede tener algunos problemas muy molestos del tipo "huevo y la gallina" si no tiene suerte o comete un error.
Otros problemas:
Si tiene varias DLL, asegúrese de no generar en el proyecto incorrecto . Un mensaje de 'Error de compilación' puede ocurrir por muchas razones, pero la más tonta sería si no tiene EFCore instalado en el proyecto en el que está realizando el andamio.
En la consola del administrador de paquetes hay un Default project
menú desplegable y probablemente ahí es donde terminaron sus nuevos archivos si le falta un cambio esperado.
Una mejor solución que recordar establecer un menú desplegable es agregar el -Project
interruptor a su comando de andamio.
Este es el comando completo que uso:
Para EF Core 2
Scaffold-DbContext -Connection "Servidor = (local); Base de datos = DefenderRRCart; Seguridad integrada = True; Trusted_Connection = True;" -Proveedor Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext -Project RR.DataAccess -force
Para EF Core 3
dotnet ef dbcontext scaffold "Server = tcp: XXXXX.database.windows.net, 1433; Initial Catalog = DATABASE_NAME; Persist Security Info = False; User ID = USERNAME; Password = PASSWORD; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False ; Tiempo de espera de conexión = 30; " Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext --project RR.EF.csproj --force --use-database-names
Nota: -force sobrescribirá los archivos, pero no eliminará los que ya no existen. Si elimina tablas de su base de datos, debe eliminar los archivos de entidad antiguos usted mismo (simplemente ordene en Explorer por fecha y elimine los antiguos).
Referencia completa de andamios:
EF Core 2:
https://docs.efproject.net/en/latest/mis Miscellaneous / cli / powershell.html#scaffold - dbcontext (esto
EF Core 3:
https://docs.microsoft.com/en-us/ef/core/misiverse/cli/dotnet