Tutorial Entity Framework Español PDF

Title Tutorial Entity Framework Español
Author Anonymous User
Course Programacion I
Institution Universidad Autónoma Gabriel René Moreno
Pages 165
File Size 7.6 MB
File Type PDF
Total Downloads 53
Total Views 135

Summary

Curso de Entity Framework en español...


Description

¿Que es Entity Framework? Antes de .NET 3.5, nosotros (los desarrolladores) solíamos escribir código ADO.NET o Enterprise Data Access Block para guardar o recuperar datos de la aplicación de la base de datos subyacente. Solíamos abrir una conexión a la base de datos, crear un DataSet para obtener o enviar los datos a la base de datos, convertir datos del DataSet a objetos .NET o viceversa para aplicar reglas comerciales. Este fue un proceso engorroso y propenso a errores. Microsoft ha proporcionado un marco denominado "Entity Framework" para automatizar todas estas actividades relacionadas con la base de datos para su aplicación. “Entity Framework” es un marco ORM de código abierto para aplicaciones .NET compatibles con Microsoft. Permite a los desarrolladores trabajar con datos utilizando objetos de clases específicas de dominio sin centrarse en las tablas y columnas subyacentes de la base de datos donde se almacenan estos datos. Con Entity Framework, los desarrolladores pueden trabajar en un nivel más alto de abstracción cuando manejan datos, y pueden crear y mantener aplicaciones orientadas a datos con menos código en comparación con las aplicaciones tradicionales. Definición oficial: “Entity Framework es un mapeador de objetos relacionales (O / RM) que permite a los desarrolladores de .NET trabajar con una base de datos utilizando objetos .NET. Elimina la necesidad de la mayoría del código de acceso a datos que los desarrolladores generalmente necesitan escribir ". La siguiente figura ilustra dónde encaja Entity Framework en su aplicación.

Según la figura anterior, Entity Framework se ajusta entre las entidades comerciales (clases de dominio) y la base de datos. Guarda los datos almacenados en las propiedades de las entidades comerciales y también recupera datos de la base de datos y los convierte en objetos de entidades comerciales automáticamente.

Entity Framework Características  















Multiplataforma: EF Core es un marco multiplataforma que puede ejecutarse en Windows, Linux y Mac. Modelado: EF (Entity Framework) crea un EDM (Entity Data Model) basado en entidades POCO (Plain Old CLR Object) con propiedades get / set de diferentes tipos de datos. Utiliza este modelo cuando consulta o guarda datos de entidad en la base de datos subyacente. Consulta: EF nos permite usar consultas LINQ (C # / VB.NET) para recuperar datos de la base de datos subyacente. El proveedor de la base de datos traducirá estas consultas LINQ al lenguaje de consulta específico de la base de datos (por ejemplo, SQL para una base de datos relacional). EF también nos permite ejecutar consultas SQL sin procesar directamente a la base de datos. Seguimiento de cambios: EF realiza un seguimiento de los cambios ocurridos en instancias de sus entidades (valores de propiedad) que deben enviarse a la base de datos. Guardar: EF ejecuta los comandos INSERT, UPDATE y DELETE en la base de datos en función de los cambios ocurridos en sus entidades cuando llama al método SaveChanges (). EF también proporciona el método asíncrono SaveChangesAsync (). Concurrencia: EF utiliza la Concurrencia optimista de manera predeterminada para proteger los cambios de sobrescritura realizados por otro usuario, ya que los datos se obtuvieron de la base de datos. Transacciones: EF realiza una gestión automática de transacciones mientras consulta o guarda datos. También proporciona opciones para personalizar la gestión de transacciones. Almacenamiento en caché: EF incluye el primer nivel de almacenamiento en caché fuera de la caja. Por lo tanto, las consultas repetidas devolverán datos del caché en lugar de golpear la base de datos. Convenciones incorporadas: EF sigue las convenciones sobre el patrón de programación de configuración e incluye un conjunto de





reglas predeterminadas que configuran automáticamente el modelo EF. Configuraciones: EF nos permite configurar el modelo EF mediante el uso de atributos de anotación de datos o API Fluent para anular las convenciones predeterminadas. Migraciones: EF proporciona un conjunto de comandos de migración que se pueden ejecutar en la consola NuGet Package Manager o en la interfaz de línea de comandos para crear o administrar un esquema de base de datos subyacente.

Entity Framework Últimas Versiones Microsoft presentó Entity Framework en 2008 con .NET Framework 3.5. Desde entonces, lanzó muchas versiones de Entity Framework. Actualmente, hay dos versiones más recientes de Entity Framework: EF 6 y EF Core. La siguiente tabla enumera la diferencia importante entre EF 6 y EF Core.

EF 6 Versiones EF Version EF 6 EF 5 EF 4.3 EF 4.0 EF 1.0 (or 3.5)

Release Year 2013 2012 2011 2010 2008

.NET Framework .NET 4.0 & .NET 4.5, VS 2012 .NET 4.0, VS 2012 .NET 4.0, VS 2012 .NET 4.0, VS 2010 .NET 3.5 SP1, VS 2008

Learn more about EF 6 versions history and its features here.

EF Core Versiones

EF Core Version EF Core 2.0 EF Core 1.1 EF Core 1.0

Release Date August 2017 November 2016 June 2016

.NET Framework .NET Core 2.0, VS 2017 .NET Core 1.1 .NET Core 1.0

Flujo de trabajo básico en Entity Framework Aquí aprenderá sobre el flujo de trabajo básico de CRUD con Entity Framework. La siguiente figura ilustra el flujo de trabajo básico.

Comprendamos el flujo de trabajo de EF anterior: 1. En primer lugar, debe definir su modelo. La definición del modelo incluye la definición de las clases de dominio, la clase de contexto derivada de DbContext y las configuraciones (si las hay). EF realizará operaciones CRUD basadas en su modelo. 2. Para insertar datos, agregue un objeto de dominio a un contexto y llame al método SaveChanges (). EF API creará un comando INSERT apropiado y lo ejecutará en la base de datos.

3. Para leer datos, ejecute la consulta LINQ-to-Entities en su idioma preferido (C # / VB.NET). EF API convertirá esta consulta en consulta SQL para la base de datos relacional subyacente y la ejecutará. El resultado se transformará en objetos de dominio (entidad) y se mostrará en la interfaz de usuario. 4. Para editar o eliminar datos, actualice o elimine objetos de entidad de un contexto y llame al método SaveChanges (). EF API construirá el comando ACTUALIZAR o ELIMINAR apropiado y lo ejecutará en la base de datos.

¿Cómo Entity Framework Trabaja? Aquí, verá una descripción general de cómo funciona el marco de la entidad. Entity Framework API (EF6 y EF Core) incluye la capacidad de asignar clases de dominio (entidad) al esquema de la base de datos, traducir y ejecutar consultas LINQ a SQL, rastrear los cambios ocurridos en las entidades durante su vida útil y guardar los cambios en la base de datos.

Entity Data Model La primera tarea de EF API es construir un Entity Data Model (EDM). EDM es una representación en memoria de todos los metadatos: modelo conceptual, modelo de almacenamiento y mapeo entre ellos.

Modelo conceptual: EF crea el modelo conceptual a partir de sus clases de dominio, clase de contexto, convenciones predeterminadas seguidas en sus clases de dominio y configuraciones. Modelo de almacenamiento: EF crea el modelo de almacenamiento para el esquema de base de datos subyacente. En el enfoque de código primero, esto se deducirá del modelo conceptual. En el enfoque de base de datos primero, esto se deducirá de la base de datos objetivo. Asignaciones: EF incluye información de asignación sobre cómo el modelo conceptual se asigna al esquema de la base de datos (modelo de almacenamiento). EF realiza operaciones CRUD utilizando este EDM. Utiliza EDM para construir consultas SQL a partir de consultas LINQ, construir comandos INSERT, UPDATE y DELETE, y transforma el resultado de la base de datos en objetos de entidad.

Querying EF API traduce las consultas LINQ-to-Entities a consultas SQL para bases de datos relacionales usando EDM y también convierte los resultados nuevamente en objetos de entidad.

Saving EF API infiere los comandos INSERT, UPDATE y DELETE en función del estado de las entidades cuando se llama al método SaveChanges (). ChangeTrack realiza un seguimiento de los estados de cada entidad a medida que se realiza una acción.

Arquitectura de Entity Framework La siguiente figura muestra la arquitectura general de Entity Framework.

Veamos los componentes de la arquitectura individualmente.. EDM (Entity Data Model): EDM consta de tres partes principales: modelo conceptual, modelo de mapeo y almacenamiento. Modelo conceptual: el modelo conceptual contiene las clases de modelos y sus relaciones. Esto será independiente del diseño de su tabla de base de datos. Modelo de almacenamiento: El modelo de almacenamiento es el modelo de diseño de base de datos que incluye tablas, vistas, procedimientos almacenados y sus relaciones y claves. Asignación: la asignación consiste en información sobre cómo se asigna el modelo conceptual al modelo de almacenamiento. LINQ to Entities: LINQ-to-Entities (L2E) es un lenguaje de consulta utilizado para escribir consultas en el modelo de objetos. Devuelve entidades, que se definen en el modelo conceptual. Puedes usar tus habilidades LINQ aquí.

Entity SQL: Entity SQL es otro lenguaje de consulta (solo para EF 6) al igual que LINQ to Entities. Sin embargo, es un poco más difícil que L2E y el desarrollador tendrá que aprenderlo por separado. Servicio de objetos: El servicio de objetos es un punto de entrada principal para acceder a los datos de la base de datos y devolverlos. El servicio de objetos es responsable de la materialización, que es el proceso de convertir los datos devueltos desde un proveedor de datos de cliente de entidad (siguiente capa) a una estructura de objeto de entidad. Proveedor de datos de cliente de entidad: la principal responsabilidad de esta capa es convertir las consultas LINQ-to-Entities o Entity SQL en una consulta SQL que la base de datos subyacente entiende. Se comunica con el proveedor de datos ADO.Net que a su vez envía o recupera datos de la base de datos. Proveedor de datos ADO.Net: esta capa se comunica con la base de datos utilizando ADO.Net estándar.

Clase de Contexto in Entity Framework La clase de contexto es una clase más importante mientras se trabaja con EF 6 o EF Core. Representa una sesión con la base de datos subyacente mediante la cual puede realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar). La clase de contexto en Entity Framework es una clase que deriva de System.Data.Entity.DbContextDbContext en EF 6 y EF Core. Una instancia de la clase de contexto representa patrones de Unidad de trabajo y repositorio en los que puede combinar múltiples cambios en una sola transacción de base de datos. La clase de contexto se utiliza para consultar o guardar datos en la base de datos. También se utiliza para configurar clases de dominio, asignaciones relacionadas con bases de datos, cambiar la configuración de seguimiento, almacenamiento en caché, transacciones, etc.

La siguiente clase SchoolContext es un ejemplo de una clase de contexto. using System.Data.Entity; public class SchoolContext : DbContext { public SchoolContext() { } // Entities public DbSet Students { get; set; } public DbSet StudentAddresses { get; set; } public DbSet Grades { get; set; } }

En el ejemplo anterior, la clase SchoolContext se deriva de DbContext, lo que la convierte en una clase de contexto. También incluye un conjunto de entidades para las entidades Student, StudentAddress y Grade (más información al respecto a continuación).

¿Qué es una entidad en Entity Framework? Una entidad en Entity Framework es una clase que se asigna a una tabla de base de datos. Esta clase debe incluirse como una propiedad de tipo DbSet en la clase DbContext. EF API asigna cada entidad a una tabla y cada propiedad de una entidad a una columna en la base de datos. Por ejemplo, Student y Grade son clases de dominio en la aplicación de la escuela. public class Student { public int StudentID { get; set; }

public string StudentName { get; set; } public DateTime? DateOfBirth { get; set; } public byte[]

Photo { get; set; }

public decimal Height { get; set; } public float Weight { get; set; } public Grade Grade { get; set; } } public class Grade { public int GradeId { get; set; } public string GradeName { get; set; } public string Section { get; set; } public ICollection Students { get; set; } }

Las clases anteriores se convierten en entidades cuando se incluyen como propiedades DbSet en una clase de contexto (la clase que deriva de DbContext), como se muestra a continuación. public class SchoolContext : DbContext { public SchoolContext() { } public DbSet Students { get; set; } public DbSet Grades { get; set; } }

En la clase de contexto anterior, las propiedades Students y Grades del tipo DbSet se denominan conjuntos de entidades. Student y grade son entidades. EF API creará las tablas Students y Grades en la base de datos, como se muestra a continuación.

Una entidad puede incluir dos tipos de propiedades: propiedades escalares y propiedades de navegación.

Propiedades Escalares Las propiedades de tipo primitivo se denominan propiedades escalares. Cada propiedad escalar se asigna a una columna en la tabla de la base de datos que almacena datos reales. Por ejemplo, StudentID, StudentName, DateOfBirth, Photo, Height, Weight son las propiedades escalares en la clase de entidad Student.

public class Student { // scalar properties public int StudentID { get; set; } public string StudentName { get; set; } public DateTime? DateOfBirth { get; set; } public byte[] Photo { get; set; } public decimal Height { get; set; } public float Weight { get; set; } //reference navigation properties public Grade Grade { get; set; } }

EF API creará una columna en la tabla de la base de datos para cada propiedad escalar, como se muestra a continuación.

Propiedad de navegación La propiedad de navegación representa una relación con otra entidad. Hay dos tipos de propiedades de navegación: navegación de referencia y navegación de colección

Propiedad de navegación de referencia Si una entidad incluye una propiedad de otro tipo de entidad, se denomina Propiedad de navegación de referencia. Apunta a una sola entidad y representa la multiplicidad de uno (1) en las relaciones de la entidad. EF API creará una columna ForeignKey en la tabla para las propiedades de navegación que apunta a una PrimaryKey de otra tabla en la base de datos. Por ejemplo, Grade es propiedad de navegación de referencia en la siguiente clase de entidad Student. public class Student { // scalar properties public int StudentID { get; set; } public string StudentName { get; set; } public DateTime? DateOfBirth { get; set; } public byte[]

Photo { get; set; }

public decimal Height { get; set; } public float Weight { get; set; }

//reference navigation property public Grade Grade { get; set; } }

En la base de datos, EF API creará un ForeignKey Grade_GradeId en la tabla Students, como se muestra a continuación.

Propiedad de Colección de Navegación Si una entidad incluye una propiedad de colección genérica de un tipo de entidad, se llama propiedad de navegación de colección. Representa la multiplicidad de muchos (*). EF API no crea ninguna columna para la propiedad de navegación de la colección en la tabla relacionada de una entidad, pero crea una columna en la tabla de una entidad de colección genérica. Por ejemplo, la siguiente entidad Grade contiene una propiedad de navegación de colección genérica ICollection . Aquí, la entidad Student se especifica cómo tipo genérico, por lo que EF API creará una columna Grade_GradeId en la tabla Alumnos de la base de datos.

Obtenga más información sobre cómo las propiedades de navegación desempeñan un papel importante en la definición de las relaciones entre entidades.

Tipos de Entidades en Entity Framework Hay dos tipos de entidades en Entity Framework: POCO Entities y Dynamic Proxy Entities.

POCO Entities (Plain Old CLR Object) Una entidad POCO es una clase que no depende de ninguna clase base específica del marco. Es como cualquier otra clase .NET CLR normal, por lo que se llama "Objetos CLR antiguos simples". Las entidades POCO son compatibles con EF 6 y EF Core. Estas entidades POCO (también conocidas como objetos que ignoran la persistencia) admiten la mayoría de los mismos comportamientos de consulta, inserción, actualización y eliminación que los tipos de entidad

generados por el Modelo de datos de entidad. El siguiente es un ejemplo de entidad POCO de Student.

public class Student { public int StudentID { get; set; } public string StudentName { get; set; } public DateTime? DateOfBirth { get; set; } public byte[] Photo { get; set; } public decimal Height { get; set; } public float Weight { get; set; } public StudentAddress StudentAddress { get; set; } public Grade Grade { get; set; } }

Dynamic Proxy Entities (POCO Proxy) Dynamic Proxy es una clase de proxy de tiempo de ejecución que envuelve la entidad POCO. Las entidades proxy dinámicas permiten la carga diferida. Nota: las entidades proxy dinámicas solo son compatibles con EF 6. EF Core 2.0 aún no las admite. Una entidad POCO debe cumplir convertirse en un proxy POCO:

los

siguientes

requisitos

para

1. Una clase POCO debe declararse con acceso público. 2. Una clase POCO no debe sellarse (no heredable en Visual Basic). 3. Una clase POCO no debe ser abstracta (MustInherit en Visual Basic). 4. Cada propiedad de navegación debe declararse como pública, virtual. 5. Cada propiedad de colección debe ser ICollection . 6. La opción ProxyCreationEnabled NO debe ser falsa (el valor predeterminado es verdadero) en la clase de contexto.

La siguiente entidad POCO cumple con todos los requisitos anteriores para convertirse en una entidad proxy dinámica en tiempo de ejecución. public class Student { public int StudentID { get; set; } public string StudentName { get; set; } public DateTime? DateOfBirth { get; set; } public byte[]

Photo { get; set; }

public decimal Height { get; set; } public float Weight { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual Grade Grade { get; set; } }

Nota: Por defecto, el proxy dinámico está habilitado para cada entidad. Sin embargo, puede deshabilitar el proxy dinámico configurando context.Configuration.ProxyCreationEnabled = false; en la clase de contexto. En tiempo de ejecución, EF API creará una instancia de proxy dinámico para la entidad de Estudiante anterior. El tipo de proxy dinámico para Student será System.Data.Entity.DynamicProxies.Student, como se muestra a continuación:

Use ObjectContext.GetObjectType() para encontrar el tipo envuelto subyacente por el proxy dinámico como se muestra a continuación:

EntityState en Entity Framework EF API mantiene el estado de cada entidad durante su vida útil. Cada entidad tiene un estado basado en la operación realizada a través de la clase de contexto. El estado de la entidad representado por una enumeración System.Data.Entity.EntityState en EF 6 y Microsoft.EntityFrameworkCore.EntityState en EF Core con los siguientes valores: 1. 2. 3. 4. 5.

Added Modified Deleted Unchanged Detached

El contexto no solo contiene la referencia a todos los objetos de la entidad tan pronto como se recupera de la base de datos, sino que también realiza un seguimiento de los estados de la entidad y mantiene las modificaciones realizadas en las propiedades de la entidad. Esta característica se conoce como seguimiento de cambios (Change traking). El cambio en el estado de la entidad del estado Sin cambios al modificado es el único estado que el contexto maneja automáticamente. Todos los demás cambios deben realizarse explícitamente utili...


Similar Free PDFs