Entity Framework Core 2.1: Herramientas – Scaffold-DbContext

Continuamos el tema de los comandos de Entity Framework! Comandos que ya vimos:

  1. Getting Help
  2. Add Migration
  3. Update-Database
  4. Remove-Migration

Scaffold-DbContext

Este es el comando que debes de utilizar cuando tienes una base de datos ya existente y quieres generar, a partir de ella, un data context y todas las clases respectivas que representan las tablas de dicha base de datos. A este procedimiento le llamamos base de datos primero. Tenemos una entrada la cual habla más a fondo de esta técnica. En esta entrada estudiaremos el comando Scaffold-DbContext.

En el caso del dotnet CLI, puedes encontrar este comando en:

dotnet ef dbcontext scaffold

De este comando, podemos destacar los siguientes parámetros:

  • Connection: Este es el connection string hacia la base de dato.
  • Provider: El proveedor a utilizar. Recordamos que el proveedor es la librería que hace que EF Core funcione con un motor de base de datos específico.
  • OutputDir: Lugar donde se van a colocar los archivos generados
  • Force: Sobreescribir archivos de ser necesario. Esto significa que cuando se vayan a generar los archivos correspondientes, si un archivo tiene peligro de ser sobreescrito, EF Core lo que hace es que detiene toda la operación, sin embargo, si indicamos la opción -force, entonces el archivo va a ser sobreescrito.
  • Schemas: Los nombres de los esquemas a los que pertenecen las tablas que queremos generar como clases
  • Tablas: Las tablas que queremos generar.
  • DataAnnotations: Si queremos que se generen anotaciones de datos cuando sea posible, de lo contrario, todas las configuraciones se mostrarán utilizando el API Fluente.

Existen otros parámetros los cuales puedes ver utilizando el comando Get-Help.

Ejemplos

En los siguientes ejemplos trabajaremos bajo la suposición de que utilizaremos el proveedor de SQL Server, el cual representaremos como [proveedor], y que nuestro connection string es el siguiente [connectionString], esto para acortar espacio en los ejemplos. Aquí un ejemplo de un connection String:

Data Source=(localdb)\mssqllocaldb;Initial Catalog=MyDatabase;Integrated Security=True”

Y, el proveedor que voy a estar utilizando: Microsoft.EntityFrameworkCore.SqlServer

Uso básico: El uso básico sería que queremos generar todas las tablas de una base de datos como clases en nuestra aplicación. Para eso. En el Package Manager Console, podemos ejecutar el siguiente comando:

Scaffold-DbContext [ConnectionString] [proveedor]

En el dotnet CLI, haríamos lo siguiente:

dotnet ef dbcontext scaffold [ConnectionString] [proveedor]

Solamente dos tablas específicas: Supongamos que de nuestra gran base de datos, solamente queremos dos tablas específicas, llamadas Students y Contacts, para generar solamente esas dos tablas, en el Package Manager Console, podemos ejecutar el siguiente comando:

Scaffold-DbContext [ConnectionString] [proveedor] -Tables Students,Contacts

En el dotnet CLI, haríamos lo siguiente:

dotnet ef dbcontext scaffold [ConnectionString] [proveedor] --table Students --table Contacts
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s