Introducción a 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.
Puede seguir el tutorial con Visual Studio en Windows o mediante la CLI de .NET en Windows, macOS o Linux.
Vea un ejemplo de este artículo en GitHub.
Requisitos previos
Instale el software siguiente:
Cree un nuevo proyecto
dotnet new console -o EFGetStarted
cd EFGetStarted
Instalación de 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. En este tutorial se usa SQLite porque se ejecuta en todas las plataformas compatibles con .NET. Para obtener una lista de proveedores disponibles, vea Proveedores de bases de datos.
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
Creación del modelo
Defina una clase de contexto y clases de entidad que conformen el modelo.
- En el directorio del proyecto, cree Model.cs con el código siguiente.
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
public string DbPath { get; }
public BloggingContext()
{
var folder = Environment.SpecialFolder.LocalApplicationData;
var path = Environment.GetFolderPath(folder);
DbPath = System.IO.Path.Join(path, "blogging.db");
}
// The following configures EF to create a Sqlite database file in the
// special "local" folder for your platform.
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite($"Data Source={DbPath}");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; } = new();
}
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.
Sugerencia: esta aplicación lo hace todo más fácil de forma intencionada. Las cadenas de conexión no se deben almacenar en el código para aplicaciones de producción. Además, es recomendable que divida cada clase de C# en su archivo correspondiente.
Creación de la base de datos
Los pasos siguientes usan migraciones para crear una base de datos.
Ejecute los comandos siguientes:
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. El comando
migrations
aplica la técnica scaffolding a una migración para crear el conjunto inicial de tablas para el modelo. El comandodatabase update
crea la base de datos y le aplica la nueva migración.
Creación, lectura, actualización y eliminación
Abra el archivo Program.cs y sustituya el contenido por el código siguiente:
using System; using System.Linq; using var db = new BloggingContext(); // Note: This sample requires the database to be created before running. Console.WriteLine($"Database path: {db.DbPath}."); // 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ón
dotnet run
Pasos siguientes
- Siga el tutorial de ASP.NET Core para usar EF Core en una aplicación web.
- Obtenga más información sobre las expresiones de consulta LINQ.
- Configure su modelo para especificar aspectos como requerido y longitud máxima.
- Use Migraciones para actualizar el esquema de la base de datos después de cambiar el modelo.