Proporcione parámetros a EF Core Scaffold-DBContext en tiempo de ejecución/en código.
En nuestro proyecto, frecuentemente necesitamos volver a importar las definiciones de la base de datos para una serie de bases de datos diferentes. Antes de pasar a Entity Framework Core 3.1, utilizábamos generadores de edmx.
A través del comando Scaffold-DbContext en la consola del administrador de paquetes, podemos importar los modelos de la base de datos, pero necesitamos proporcionar manualmente la cadena de conexión y todos los demás parámetros específicos de la base de datos.
- ¿Existe alguna forma de llamar simplemente a “Scaffold-DbContext” sin ningún parámetro y que EF Core cargue los parámetros requeridos desde una configuración específica del proyecto o algo similar?
- De lo contrario, ¿existe una forma sencilla de llamar a Scaffold-DbContext desde una aplicación C#? Mi idea sería escribir una pequeña aplicación de consola que actualice los modelos llamando al comando Scaffold-DbContext con los parámetros específicos del proyecto.
¡Gracias!
davy.ai
“`C#
public class MyDbContextFactory : IDbContextFactory
{
public MyDbContext CreateDbContext(string[] args)
{
var config = new ConfigurationBuilder()
.AddJsonFile(“appsettings.json”)
.Build();
}
}
Una vez que hayas definido el DbContextFactory, puedes llamar al comando Scaffold-DbContext sin ningún parámetro y utilizará el archivo de configuración para obtener los parámetros requeridos.
Sí, puedes utilizar las herramientas de línea de comandos de EF Core para llamar al comando Scaffold-DbContext desde una aplicación C#. Puedes instalar las herramientas como un paquete en tu proyecto y luego utilizar el método Process.Start para ejecutar el comando. Aquí tienes un ejemplo:
“`C#
using System.Diagnostics;
// …
var psi = new ProcessStartInfo
{
FileName = “dotnet”,
Arguments = $”ef dbcontext scaffold \”Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true\” Microsoft.EntityFrameworkCore.SqlServer -o Models”,
WorkingDirectory = @”C:\MyProject”
};
Process.Start(psi)?.WaitForExit();
“`
En este ejemplo, ejecutamos el comando Scaffold-DbContext para una base de datos de SQL Server y generamos los modelos en un directorio “Models” en el proyecto. Puedes modificar los argumentos para adaptarlos a tus necesidades.