LINQ to Entities
Introducción
Entity Framework proporciona las clases necesarias para ejecutar consultas y extraer los registros almacenados en la base de datos. Las consultas se pueden hacer usando LINQ to Entities o Entity SQL.
Para ilustrar este capítulo, se modifica el formulario MailServerSettings para mostrar un control ComboBox que contiene las configuraciones almacenadas en la base de datos y un botón que permite hacer copias de seguridad de las modificaciones:
Extraer datos
Las consultas se definen con objetos de tipo DbSet<T> y deben ejecutarse dentro del contexto de las entidades inicializadas en la clase Program.cs:
var builder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddDbContext<SelfMailerContext>(options =>
{
options.UseSqlServer("Server=localhost\\SQLEXPRESS;
Database=SelfMailer;Trusted_Connection=True;");
});
});
var host = builder.Build();
El contexto puede, entonces, recuperarse e inyectarse en la aplicación:
using (var serviceScope = host.Services.CreateScope())
{
var services = serviceScope.ServiceProvider;
Context = services.GetRequiredService<SelfMailerContext>();
}
Para simplificar, se agrega la variable estática Context a la clase Program para que esté disponible globalmente.
public static SelfMailerContext Context { get; set; }
1. La extracción simple
Para rellenar el control ComboBox del formulario con las configuraciones almacenadas en la base de datos, las entidades se pueden recuperar directamente desde el contexto:
var query = Program.Context.MailServers;
Se recuperan...
Añadir, modificar y eliminar datos
Leer, buscar, filtrar y ordenar los registros de la base de datos solo representa una parte de las necesidades de una aplicación. Añadir, modificar y suprimir datos son acciones habituales realizadas sobre un conjunto de datos.
1. Añadir datos
La adición de nuevos registros se hace creando una nueva entidad del tipo deseado. A continuación, basta con guardar sus propiedades y añadirla a la colección de entidades del contexto:
MailServer newMailServer = new MailServer();
newMailServer.Host = this.Host.Text;
newMailServer.Username = this.Username.Text;
newMailServer.Password.Value = this.Password.Text;
newMailServer.Password.AllowSave = true;
Program.Context.MailServers.Add(newMailServer);
La adición de la nueva entidad a la colección del contexto se puede efectuar antes o después de la asignación de las propiedades.
La nueva entidad creada se puede relacionar con una entidad existente según las relaciones. Para leer la entidad newMailServer creada anteriormente con una entidad Sender es preciso agregarla a la colección de entidades relacionadas:
Sender newSender = new Sender();
Program.Context.Senders.Add(newSender);
newSender.MailServer.Add(newMailServer);
2. Modificar datos
La modificación de una entidad...