Introducción a EF Core en .NET Framework con una base de datos nuevaGetting started with EF Core on .NET Framework with a New Database

En este tutorial, compilará una aplicación de consola que realiza el acceso a datos básicos en una base de datos de Microsoft SQL Server mediante Entity Framework.In this tutorial, you build a console application that performs basic data access against a Microsoft SQL Server database using Entity Framework. Se usan migraciones para crear la base de datos a partir del modelo.You use migrations to create the database from a model.

Vea un ejemplo de este artículo en GitHub.View this article's sample on GitHub.

Requisitos previosPrerequisites

Crear un proyecto nuevoCreate a new project

  • Abra Visual Studio 2017Open Visual Studio 2017

  • Archivo > Nuevo > Proyecto...File > New > Project...

  • En el menú izquierdo, seleccione Instalado > Visual C# > Escritorio de Windows.From the left menu select Installed > Visual C# > Windows Desktop

  • Seleccione la plantilla del proyecto Aplicación de consola (.NET Framework)Select the Console App (.NET Framework) project template

  • Asegúrese de que el proyecto tenga .NET Framework 4.6.1 o posterior como destino.Make sure that the project targets .NET Framework 4.6.1 or later

  • Asigne el nombre ConsoleApp.NewDb al proyecto y haga clic en Aceptar.Name the project ConsoleApp.NewDb and click OK

Instalación de Entity FrameworkInstall Entity Framework

Para usar EF Core, instale el paquete correspondiente a los proveedores de bases de datos a los que desea dirigirse.To use EF Core, install the package for the database provider(s) you want to target. Este tutorial usa SQL Server.This tutorial uses SQL Server. Para una lista de los proveedores disponibles, consulte Proveedores de bases de datos.For a list of available providers see Database Providers.

  • Herramientas > Administrador de paquetes NuGet > Consola del Administrador de paquetesTools > NuGet Package Manager > Package Manager Console

  • Ejecute Install-Package Microsoft.EntityFrameworkCore.SqlServer.Run Install-Package Microsoft.EntityFrameworkCore.SqlServer

Más adelante en este tutorial usará parte de Entity Framework Tools para mantener la base de datos.Later in this tutorial you use some Entity Framework Tools to maintain the database. Por lo tanto, instale el paquete de herramientas.So install the tools package as well.

  • Ejecute Install-Package Microsoft.EntityFrameworkCore.Tools.Run Install-Package Microsoft.EntityFrameworkCore.Tools

Creación del modeloCreate the model

Ahora hay que definir un contexto y clases de entidad que constituyan el modelo.Now it's time to define a context and entity classes that make up the model.

  • Proyecto > Agregar clase...Project > Add Class...

  • Escriba Model.cs como el nombre y haga clic en AceptarEnter Model.cs as the name and click OK

  • Reemplace el contenido del archivo por el código siguienteReplace the contents of the file with the following code

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace ConsoleApp.NewDb
    {
        public class BloggingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;");
            }
        }
    
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public List<Post> Posts { get; set; }
        }
    
        public class Post
        {
            public int PostId { get; set; }
            public string Title { get; set; }
            public string Content { get; set; }
    
            public int BlogId { get; set; }
            public Blog Blog { get; set; }
        }
    }
    

Sugerencia

En una aplicación real, lo habitual sería colocar cada clase en un archivo independiente, y la cadena de conexión, en un archivo de configuración o una variable de entorno.In a real application you would put each class in a separate file and put the connection string in a configuration file or environment variable. Por simplicidad, en este tutorial todos estos elementos están en un solo archivo de código.For the sake of simplicity, everything is in a single code file for this tutorial.

Creación de la base de datosCreate the database

Ahora que ya tiene un modelo, puede usar las migraciones para crear una base de datos.Now that you have a model, you can use migrations to create a database.

  • Herramientas > Administrador de paquetes NuGet > Consola del Administrador de paquetesTools > NuGet Package Manager > Package Manager Console

  • Ejecute Add-Migration InitialCreate para aplicar scaffolding a una migración y, así, crear el conjunto inicial de tablas para el modelo.Run Add-Migration InitialCreate to scaffold a migration to create the initial set of tables for the model.

  • Ejecute Update-Database para aplicar la migración nueva a la base de datos.Run Update-Database to apply the new migration to the database. Como la base de datos todavía no existe, se creará antes de aplicar la migración.Because the database doesn't exist yet, it will be created before the migration is applied.

Sugerencia

Si hace cambios en el modelo, puede usar el comando Add-Migration para aplicar scaffolding a una migración nueva con el fin de hacer los cambios de esquema correspondientes a la base de datos.If you make changes to the model, you can use the Add-Migration command to scaffold a new migration to make the corresponding schema changes to the database. Una vez que compruebe el código con scaffold (y haya hecho los cambios necesarios), puede usar el comando Update-Database para aplicar los cambios a la base de datos.Once you have checked the scaffolded code (and made any required changes), you can use the Update-Database command to apply the changes to the database.

EF usa una tabla __EFMigrationsHistory en la base de datos para realizar un seguimiento de cuáles son las migraciones que ya se aplicaron a la base de datos.EF uses a __EFMigrationsHistory table in the database to keep track of which migrations have already been applied to the database.

Uso del modeloUse the model

Ahora puede usar el modelo para realizar el acceso a los datos.You can now use the model to perform data access.

  • Abra Program.cs.Open Program.cs

  • Reemplace el contenido del archivo por el código siguienteReplace the contents of the file with the following code

    using System;
    
    namespace ConsoleApp.NewDb
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (var db = new BloggingContext())
                {
                    db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    var count = db.SaveChanges();
                    Console.WriteLine("{0} records saved to database", count);
    
                    Console.WriteLine();
                    Console.WriteLine("All blogs in database:");
                    foreach (var blog in db.Blogs)
                    {
                        Console.WriteLine(" - {0}", blog.Url);
                    }
                }
            }
        }
    }
    
  • Depurar > Iniciar sin depuraciónDebug > Start Without Debugging

    Verá que un blog se guarda en la base de datos y, luego, los detalles de todos los blogs se imprimen en la consola.You see that one blog is saved to the database and then the details of all blogs are printed to the console.

    imagen

Recursos adicionalesAdditional Resources