Introducción a EF CoreGetting Started with EF Core

En este tutorial se crea una aplicación de consola de .NET Core que realiza el acceso a datos en una base de datos SQLite mediante Entity Framework Core.In this tutorial, you create a .NET Core console app that performs data access against a SQLite database using Entity Framework Core.

Puede seguir el tutorial con Visual Studio en Windows o mediante la CLI de .NET Core en Windows, macOS o Linux.You can follow the tutorial by using Visual Studio on Windows, or by using the .NET Core CLI on Windows, macOS, or Linux.

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

Requisitos previosPrerequisites

Instale el software siguiente:Install the following software:

Crear un proyecto nuevoCreate a new project

dotnet new console -o EFGetStarted
cd EFGetStarted

Instalación de Entity Framework CoreInstall Entity Framework Core

Para instalar EF Core, instale el paquete de los proveedores de bases de datos de EF Core que quiera establecer como destino.To install EF Core, you install the package for the EF Core database provider(s) you want to target. Este tutorial usa SQLite porque se ejecuta en todas las plataformas compatibles con .NET Core.This tutorial uses SQLite because it runs on all platforms that .NET Core supports. Para obtener una lista de proveedores disponibles, vea Proveedores de bases de datos.For a list of available providers, see Database Providers.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Creación del modeloCreate the model

Defina una clase de contexto y clases de entidad que conformen el modelo.Define a context class and entity classes that make up the model.

  • En el directorio del proyecto, cree Model.cs con el código siguiente.In the project directory, create Model.cs with the following code
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

namespace EFGetStarted
{
    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=blogging.db");
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }

        public List<Post> Posts { get; } = new List<Post>();
    }

    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; }
    }
}

EF Core también puede aplicar ingeniería inversa en un modelo desde una base de datos existente.EF Core can also reverse engineer a model from an existing database.

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.Tip: In a real app, you put each class in a separate file and put the connection string in a configuration file or environment variable. Para que el tutorial sea sencillo, todo está incluido en un archivo.To keep the tutorial simple, everything is contained in one file.

Creación de la base de datosCreate the database

Los pasos siguientes usan migraciones para crear una base de datos.The following steps use migrations to create a database.

  • Ejecute los comandos siguientes:Run the following commands:

    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    Esto instala dotnet ef y el paquete de diseño necesario para ejecutar el comando en un proyecto.This installs dotnet ef and the design package which is required to run the command on a project. El comando migrations aplica la técnica scaffolding a una migración para crear el conjunto inicial de tablas para el modelo.The migrations command scaffolds a migration to create the initial set of tables for the model. El comando database update crea la base de datos y le aplica la nueva migración.The database update command creates the database and applies the new migration to it.

Creación, lectura, actualización y eliminaciónCreate, read, update & delete

  • Abra Program.cs y reemplace el contenido por el código siguiente:Open Program.cs and replace the contents with the following code:

    using System;
    using System.Linq;
    
    namespace EFGetStarted
    {
        class Program
        {
            static void Main()
            {
                using (var db = new BloggingContext())
                {
                    // Create
                    Console.WriteLine("Inserting a new blog");
                    db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    db.SaveChanges();
    
                    // Read
                    Console.WriteLine("Querying for a blog");
                    var blog = db.Blogs
                        .OrderBy(b => b.BlogId)
                        .First();
    
                    // Update
                    Console.WriteLine("Updating the blog and adding a post");
                    blog.Url = "https://devblogs.microsoft.com/dotnet";
                    blog.Posts.Add(
                        new Post
                        {
                            Title = "Hello World",
                            Content = "I wrote an app using EF Core!"
                        });
                    db.SaveChanges();
    
                    // Delete
                    Console.WriteLine("Delete the blog");
                    db.Remove(blog);
                    db.SaveChanges();
                }
            }
        }
    }
    

Ejecutar la aplicaciónRun the app

dotnet run

Pasos siguientesNext steps