Saltar al contenido

“Error de compilación” en Database First Scaffold-DbContext

Bienvenido a nuestra web, en este sitio vas a encontrar la respuesta que andabas buscando.

Solución:

Dos consejos más importantes:

[1] – Asegúrese de que su proyecto se construya completamente antes de ejecutar un nuevo comando de andamio.

De lo contrario…

  • 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 andamiarlo.
  • Veinte minutos más tarde, se dará cuenta de que la razón por la cual 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] – Comprobar en el control de código fuente o hacer una copia:

  • Le permite verificar fácilmente qué cambió.
  • Permite revertir si es necesario.

Puede obtener algunos problemas muy molestos de “huevo y gallina” si tiene mala suerte o comete un error.


Otros problemas:

Si tiene varias DLL, asegúrese de no generarlas en el proyecto equivocado. 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á trabajando.

En la consola del administrador de paquetes hay un Default project menú desplegable y allí es probablemente 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 cambie a su comando de andamios.

Este es el comando completo que uso:

Para EF Core 2

Scaffold-DbContext -Connection “Server=(local);Database=DefenderRRCart;Integrated Security=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 Núcleo 2:

https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext (este

EF Núcleo 3:

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

Construyendo manualmente el proyecto presionando Ctrl+Mayús+B me ayudó a ver los errores que estaban causando que la compilación fallara.

Sé que esto es viejo, pero pasé un tiempo tratando de resolverlo hoy, así que espero que esto ayude a alguien.

Tengo un proyecto de .Net Core, pero quiero convertir mis archivos en una biblioteca de clases de .Net Standard. DbContext-Scaffold en la consola del administrador de paquetes no funcionó para mí, pero dotnet ef dbcontext scaffold en un símbolo del sistema regular lo hizo.

Tuve que instalar estos paquetes en mi biblioteca de clases:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Diseño
  • Microsoft.EntityFrameworkCore.Herramientas

Tenía que tener un proyecto .Net Core configurado como proyecto de inicio en mi solución y ese proyecto tenía que tener una referencia a mi biblioteca de clases. Creo que la última parte es lo que me faltaba y que me mantuvo rascándome la cabeza durante tanto tiempo.

Finalmente, ingresé a la biblioteca de clases desde un símbolo del sistema y ejecuté esto:

dotnet ef dbcontext scaffold "" Microsoft.EntityFrameworkCore.SqlServer -o  -s 

Si conservas alguna desconfianza y capacidad de perfeccionar nuestro división eres capaz de realizar una interpretación y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *