Está en la página 1de 10

Capítulo 7

Manejo a Datos con Entity Framework 6.0

Objetivo

Al finalizar el capítulo, el alumno:


 Comprende el uso del Mapeador relacional de objetos – ORM.
 Realizar operaciones de acceso a datos con Entity Framework.
 Creando la base de datos partiendo del modelo de Entity Framework.

Temas

1. Definición de Entity Framework.


2. Operaciones de mantenimiento y consultas Entity Framework
3. Uso del enfoque Modelo Code First.

Programa .Net 4.5.1 Application Developer Visual Studio 2013 – C#


Manejo a Datos con Entity Framework 6.0 62

1. Definición de Entity Framework

ADO Entity Framework es un conjunto de tecnologías de ADO.NET que permiten el


desarrollo de aplicaciones de software orientadas a datos.

Los arquitectos y programadores de aplicaciones orientadas a datos, se han


enfrentado a la necesidad de lograr dos objetivos muy diferentes: deben modelar las
entidades, las relaciones y la lógica de los problemas empresariales que resuelven, y
además, deben trabajar con los motores de datos que se usan para almacenar y
recuperar los datos. Los datos pueden abarcar varios sistemas de almacenamiento,
cada uno con sus propios protocolos; incluso las aplicaciones que funcionan con un
único sistema de almacenamiento deben equilibrar los requisitos del sistema de
almacenamiento, con respecto a los requisitos de escribir un código de aplicación
eficaz y fácil de mantener.

Asimismo, Entity Framework permite a los programadores, trabajar con datos en forma
de objetos y propiedades específicos del dominio, por ejemplo, con clientes y
direcciones, sin tener que pensar en las tablas de las bases de datos subyacentes y
en las columnas en las que se almacenan estos datos. Para ello, se eleva el nivel de
abstracción en la que los programadores pueden trabajar al tratar con datos, y se
reduce el código requerido para crear y mantener las aplicaciones orientadas a datos.

Entity Framework está diseñado para permitir a los programadores crear aplicaciones
de acceso a datos, programando con un modelo de la aplicación conceptual en lugar
de programar directamente con un esquema de almacenamiento relacional.

El objetivo es reducir la cantidad de código y mantenimiento que se necesita para las


aplicaciones orientadas a datos. Las aplicaciones de Entity Framework ofrecen las
siguientes ventajas:
Manejo a Datos con Entity Framework 6.0 63

 Las aplicaciones pueden funcionar en términos de un modelo conceptual más


centrado en la aplicación, que incluye tipos con herencia, miembros
complejos y relaciones.
 Las aplicaciones están libres de dependencias de codificación rígida de un
motor de datos o de un esquema de almacenamiento.
 Las asignaciones entre el modelo conceptual y el esquema específico de
almacenamiento pueden cambiar, sin tener que cambiar el código de la
aplicación.
 Los programadores pueden trabajar con un modelo de objeto de aplicación
coherente que se puede asignar a diversos esquemas de almacenamiento,
posiblemente implementados en sistemas de administración de base de datos
diferentes.
 Se pueden asignar varios modelos conceptuales a un único esquema de
almacenamiento.
 La compatibilidad con Language-Integrated Query (LINQ) proporciona
validación de la sintaxis en el momento de la compilación para consultas en
un modelo conceptual.

Componentes

El Entity Framework incluye el proveedor de datos de EntityClient. Este proveedor


administra las conexiones, traduce las consultas de entidad en consultas específicas
del origen de datos y devuelve un lector de datos, que servicios de objeto usa para
materializar los datos de la entidad en los objetos. Cuando no se requiere la
materialización de los objetos, el proveedor de EntityClient también se puede utilizar
como un proveedor de datos ADO.NET estándar habilitando las aplicaciones para
ejecutar las consultas de Entity SQL y usar el lector de datos de solo lectura devuelto.

Los componentes principales son:

 Un modelo de Datos de Entidades (EDM)


 Un lenguaje que describe el esquema conceptual (CSDL).
 Un lenguaje de mapeado de esquema lógico a conceptual (MSL)
 Un lenguaje que describe el esquema lógico (SSDL).
 Un motor de mapeado completo que traduce del nivel conceptual al lógico
(relacional).
 Un lenguaje de consultas denominado eSQL, similar a SQL, pero con
soporte para objetos/entidades.
 Tres modos de acceso a datos a través de la capa de entidades
conceptuales.
 Un proveedor de acceso a datos denominado EntityClient.
Un modelo de objetos denominado Object Services.
Soporte para consultas vía LINQ (LINQ to Entity).

Extraído de:

MSDN
http://msdn.microsoft.com/es-es/library/bb399572.aspx
Manejo a Datos con Entity Framework 6.0 64

2. Operaciones de mantenimiento y consultas Entity


Framework

Entity Framework permite consultar, insertar, actualizar y eliminar datos, que se


expresan como objetos de Common Language Runtime (CLR) con tipos que son
instancias de tipos de entidad. Los tipos de entidad representan las entidades
definidas en el modelo conceptual.

Entity Framework asigna las entidades y las relaciones que se definen en un modelo
conceptual a un origen de datos. Entity Framework proporciona los medios para
realizar las siguientes acciones: materializar datos devueltos del origen de datos como
objetos, realizar el seguimiento de los cambios que se realizaron a los objetos,
controlar la simultaneidad, propagar los cambios de objeto de nuevo en el origen de
datos y enlazar objetos a los controles.

Trabajar con DBcontext


La clase principal que es responsable de la interacción con los datos como objetos es
System.Data.Entity.DbContext (a menudo denominado como contexto). La clase de
contexto de entidad administra los objetos en tiempo de ejecución, que incluye objetos
que pueblan con los datos de una base de datos, control de cambios, y la persistencia
de datos a la base de datos.

El método recomendado para trabajar con el contexto es definir una clase que deriva
de DbContext y expone DbSet propiedades que representan colecciones de las
entidades especificadas en el contexto. Si está trabajando con el diseñador de EF, el
contexto se generará para ti. Si está trabajando con el código, en primer lugar,
normalmente se escribe el contexto mismo.
Manejo a Datos con Entity Framework 6.0 65

Una vez que usted tiene un contexto, debería consultar, añadir (mediante Agregar o
Adjuntar métodos) o quitar (usando Remove) las entidades en el contexto a través de
estas propiedades. Acceso a una DbSet propiedad en un objeto de contexto,
representa una consulta que devuelve comenzando todas las entidades del tipo
especificado. Tenga en cuenta que solo accesando a una propiedad no se ejecutará la
consulta. Una consulta se ejecuta cuando:

Está separado por un foreach (C #) o For Each declaración (Visual Basic).


Está dividido por una operación de recolección, como ToArray , ToDictionary o ToList.
LINQ operadores como Primer o Cualquier se especifican en la parte más externa de
la consulta.
Los siguientes métodos se denominan: la carga de un método de extensión en DbSet,
DbEntityEntry.Reload y Database.ExecuteSqlCommand .

Conexiones

Por defecto, el contexto gestiona las conexiones a la base de datos. El contexto abre y
cierra las conexiones, según sea necesario. Por ejemplo, el contexto abre una
conexión para ejecutar una consulta y, a continuación, cierra la conexión cuando todos
los conjuntos de resultados han sido procesados.

Hay casos en los que desea tener más control sobre el momento en que la conexión
se abre y se cierra. Por ejemplo, cuando se trabaja con SQL Server Compact, la
apertura y cierre de la misma conexión es caro. Puede administrar este proceso
manualmente mediante la conexión de la propiedad.

Extraído de:

MSDN
http://msdn.microsoft.com/es-es/library/bb738470.aspx

http://msdn.microsoft.com/es-es/data/jj729737
Manejo a Datos con Entity Framework 6.0 66

3. Uso del enfoque Modelo Code First

Code First es un nuevo enfoque de trabajo que aparece en el Entity Framework a


partir de la versión 4.1, que nos permite crear nuestro modelo mediante clases POCO
(Plain Old CLR Object), a partir de las cuales se generará nuestro modelo de base de
datos. Otra característica es que en este modelo no existe el fichero edmx de
definición del modelo (conceptual y de datos).

Code First del EF nos permite codificar nuestro modelo para posteriormente a partir de
él, crear la base de datos.

Code First le permite:

 Desarrollar sin tener que abrir un diseñador o definir un archivo de asignación


XML.
 Defina sus objetos de modelo simplemente escribiendo "clases plain old" sin
clases básicas necesarias.

Convenciones a usar para Code Firsts

Los convenios están diseñados para proporcionar un punto de partida para la


construcción de un modelo, entre las convenciones tenemos:

 Clave principal
Previamente Code Firts infiere que una propiedad es una clave principal si la
propiedad se llama 'Id' o 'Id<NombreClase>'. El único cambio en esta
convención es que una vez que las propiedades de clave primaria se detectan
si su tipo es 'int', long o 'short', que está registrado como columnas de identidad
Manejo a Datos con Entity Framework 6.0 67

en la base de datos por defecto. Detección de clave primaria no distingue entre


mayúsculas y minúsculas.

 Relación entre dos tipos


Cuando se define una relación entre dos tipos, es común incluir una propiedad
de navegación de ambos tipos, tal como en el ejemplo siguiente:

public class Product


{
public int ProductId { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}

public class Category


{
public int CategoryId { get; set; }
public string Name { get; set; }
public ICollection<Product> Products { get; set; }
}

 Las claves externas


Basándose en el convenio anterior, también es común que incluya una
propiedad de clave externa en el extremo dependiente de una relación, en este
caso BookReview.SubjectISBN:

public class BookReview


{
public int Id { get; set; }
public Book Subject { get; set; }
public string SubjectISBN { get; set; }
}

public class Book


{
[Key]
public string ISBN { get; set; }
public string Name { get; set; }
public ICollection<BookReview> Reviews { get; set; }
}

 Type Descovery
Previamente Code Firts solo incluye los tipos que fueron declarados en
conjuntos de objetos en su contexto derivado o registrados manualmente a
través de la FLUENT API. Teniendo en cuenta el Producto el siguiente
ejemplo se han incluido en el modelo, pero no lo haría Categoría:
Manejo a Datos con Entity Framework 6.0 68

public class ProductContext : ObjectContext


{
public ProductContext(EntityConnection connection)
: base(connection)
{}

public ObjectSet<Product> Products


{
get { return base.CreateObjectSet<Product>(); }
}
}

public class Product


{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}

public class Category


{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Product> Products { get; set; }
}

 Complex Type Discovery


Sobre la base de la convención de accesibilidad, si Code Firts descubre una
definición de clase donde una clave principal no se puede deducir, y no hay
clave principal que se registra a través de anotaciones de datos o la FLUENT
API, entonces el tipo se registrará automáticamente como un tipo complejo.

Detección de tipo complejo también requiere que el tipo no tenga propiedades


de tipo referencia de entidad y no se haga referencia a una propiedad de
colección de otro tipo. Teniendo en cuenta la clase siguiente se infiere que el
nombre es un tipo complejo, ya que no tiene clave primaria:

public class Person


{
public int PersonId { get; set; }
public Name Name { get; set; }
}
public class Name
{
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Manejo a Datos con Entity Framework 6.0 69

Code Firts proporciona un amplio conjunto de convenciones predeterminadas para


determinar la forma de un modelo.

Estas convenciones se pueden anular con anotaciones de datos, que a su vez se


pueden anular a través de la FLUENT API.

Extraído de:

MSDN
http://msdn.microsoft.com/es-es/library/bb738470.aspx
http://msdn.microsoft.com/es-ES/data/jj591583
http://msdn.microsoft.com/es-es/magazine/hh126815.aspx
Manejo a Datos con Entity Framework 6.0 70

Laboratorio nº 7

Construcción del módulo de mantenimiento usando Entity Framework.

También podría gustarte