jueves, 28 de agosto de 2014

Singleton - EntityFramework 6.0

Modelo de entityframework 6.0 como singleton

Crear una partial class ModeloContainer.
Crear un método statico llamado instancia



 Dejar al constructor como privado

Utilizar el singleton del modelo.




Capas MVC con Visual Studio 2013

El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que separa los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construcción de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representación de la información, y por otro lado para la interacción del usuario. Este patrón de arquitectura de sofware se basa en las ideas de reutilizacion de código y la sepación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

Crear un proyecto llamado MVC, con un proyecto de tipo windows form aplication llamado Vista.
A partir de la siguiente solución, crear un nuevo proyecto:


El proyecto agregar es de tipo libreria de clases


Luego agregar un nuevo proyecto


 El proyecto agregar es de tipo libreria de clases


 Setar como inicio de proyecto a la vista


En el proyecto Modelo utilizamos entityframwork 



En el proyecto de la vista agregar la cadena de conexión:

 Agregar una referencia en la controladora


El proyecto agregar es el  modelo 

En la clase PersonaControladora, cuando queremos utilizar los métodos de entityframework no es posible acceder

Agregar una referencia en el proyecto controladora


Seleccionar desde el directorio packages del proyecto la libreria EntityFramework.dll


Una vez agregada la libreria, es posible acceder a los métodos.

Clase PersonaControladra con todas los métodos necesarios.


En el proyecto Vista agregar una nueva referencia


Agregar desde el proyecto, los proyectos Controladora y Modelo.


En la vista, ejemplo de utilizar la controlara. Agregar una persona y obtener la coleccion de personas.


Entityframework al momento de instanciar el contexto nos da el siguiente error:


  Crear una instancia de sqlproviderservices para solucionar el error.

Relación en Entity Framework 6.0


Crear una entidad "Producto" y "Categoria.
Crear una relacion de muchos a 1. (* a 1)





Relación entre Producto y Categoria.

Generar la base de datos a partir del modelo


Ejecutar el siguiente script


Tablas creadas en la base de datos



Agregar una Categoria y un Producto en la base de datos




Herencias en Entity Framework 6.0


Herencia TPT
La herencia tabla por tipo (TPT) utiliza una tabla separada en la base de datos para mantener los datos de propiedades no heredados y las propiedades clave de cada tipo en la jerarquía de herencia
A partir del siguiente modelo:

Al impactar el modelo, tenemos las siguientes tablas en la base de datos:

 

Se mapeo la entidad "EmpeadoInterno" con una nueva tabla llamada "Empleados_EmpleadoInterno".



Herencia TPH
Apartir del siguiente modelo


Ejecutamos el script en la base de datos:
A partir de la entidad Empleado, realizar las siguientes acciones en modelo.
Eliminar "TipoEmpleado"
Crear dos entidades "Externo" y "Interno" que deriven de Empleado
Cortar y pegar la propiedad "CostoxHora" en la entidad Externo
Cortar y pegar la propiedad "Salario" en la entidad Interno

La herencia tabla por jerarquía (TPH) utiliza una tabla de base de datos para mantener los datos para todos los tipos de entidades en una jerarquía de herencia.
 
El modelo quedara de la siguiente manera:
 La entidad Empleado debera ser abstracta.

Cuando se crea la entidad Externo que deriva de la entidad Empleado todos sus atributos, tener presente el siguiente mapeo de los campos.
Para la entidad Externo se agrega un condicion cuando la entidad es su campo "Tipo empleado" que no es visible y no es mapeada es igual a "externo". El unico campo mapeado es Costo x hora.


Cuando se crea la entidad Interno que deriva de la entidad Empleado todos sus atributos, tener presente el siguiente mapeo de los campos.
Para la entidad Interno se agrega un condicion cuando la entidad es su campo "Tipo empleado" que no es visible y no es mapeada es igual a "interno". El unico campo mapeado es Salario

Para agregar un empleado Interno o Externo a la base de datos:


Para recuperar la entidad empleado según el tipo:



martes, 26 de agosto de 2014

Métodos de Entity Framework 6.0

Métodos del contexto de Entity Framework 6.0
Creación del contexto.

Ejemplo1Entities contexto = new Ejemplo1Entities();

1.       Agregar una entidad.
//Agregar una entidad al contexto.
 contexto.Personas.Add(persona);

2.       Eliminar una entidad.
//eliminar una entidad al contexto.
contexto.Personas.Remove(persona);

3.       Actualizar una entidad.
//Actualizar una entidad al contexto.
contexto.Entry(persona).State = System.Data.Entity.EntityState.Modified;

4.       Guardar cambios.
//Guardar los cambios en la base de datos.
contexto.SaveChanges();

Para cada cambio del contexto, que puede ser: agregar, eliminar o actualizar, sera neceario llamar al metodo del contexto guardar cambios (SaveChanges()).

Visual Studio 2013 - Entityframework 6.0

Tener presente antes de arrancar con el proyecto. Guardar todo.
Agregar un nuevo elemento al proyecto.
Seleccionar “ADO.Net Entity Data Model” y con el nombre “Modelo.edmx”
Seleccionar desde un modelo vacío y finalizar
En la parte izquierda se encuentra el cuadro de herramientas disponible únicamente cuando estamos con el diagrama “Modelo.edmx”. En la parte central permite la visualizar y diseñar el modelo de entidades.

Crear una entidad.
Ingresar una nombre a la entidad, por lo general es en singular (Persona), ingresar un nombre al conjunto de entidades, hace referencia a la colección de la entidad, por lo general es en plural (Personas).
Por defecto propone la clave con el nombre "Id" de tipo Int32. Por ultimo aceptar.
En el área de diseño se encuentra la entidad creada “Persona” con su atributo clave “Id”.
Agregar propiedades a la entidad.

Clic derecho en la entidad Persona, agregar nuevo -> “Propiedad escalar”.
Por defecto en el nombre de la propiedad “Property1” de tipo string.
Por último la entidad Persona debería quedar con las siguientes propiedades.
Nombre y Apellido de tipo string, y Edad de tipo Int32.
Clic derecho, seleccionar Generar base de datos desde modelo..
El asistente nos solicitara una conexión a la base de datos. Nueva conexión para agregar.
Seleccionar el origen de datos, “Microsoft SQL Server” y continuar.
Ingresar nombre del servidor: localhost\sql_uai. Nombre de la base de datos: “Ejemplo1” y por último aceptar.


La base de datos “Ejemplo1” no existe, por lo tanto se deberá crear seleccionar “Si”.


 Por último el asistente debería quedar de la siguiente forma.  Seleccionar Siguiente >

Por defecto la versión es Entity Framework 6.0. Siguiente >
Por último el asistente creara un archivo con extensión .SQL necesario para crear las entidades en nuestra base de datos. Seleccionar Finalizar.
Conectar a la base de datos creada (Ejemplo1)
Ejecutar la consulta que contiene el archivo “Modelo.edmx.sql”.
Si volvemos al modelo. Debemos visualizar la entidad con sus propiedades mapeadas a la base de datos.
Existe la posibilidad de visualizar la base de datos desde el explorador de servidores. Presionado la tecla Ctrl + Alt  + S visualizamos el explorador de servidor. Seleccionar el servidor, base de datos y la tabla creada.