[Entity framework 4.1] Sobre Code First – DBContext y BDSet

Hola, en la anterior entrada ya vimos lo que trae [traía] de “nuevo”  esta versión del Entity Framework, allí vimos que este release permite el patrón de desarrollo de Code First, pero ¿qué es realmente? ¿Cambia mucho?… bueno pues en esta entrada tratare de describir a manera de introducción sus principales componentes.

La carpeta entidades contendrá nuestro modelo del dominio,  ¿pero como p##@$ puede ser?… pues resulta que en esta versión y en esta técnica se sigue un concepto denominado, configuración por convención, es decir, ya no tendremos que manejar tantos archivos de configuración, porque si respetamos las convenciones (un contrato entre el framework y el desarrollador :)) el framework nos entenderá perfectamente.

– Convenciones para crear el modelo:

  1. Llave primaria: Cualquier propiedad de que contenga ID o Id en su nombre será reconocida como una llave primaria en la base datos.
  2.  Relaciones – Propiedades de navegación: Una llave foránea se establece denotando una propiedad del mismo tipo que la llave primaria con la siguiente estructura <nombreLlavePrimaria><NombreForanea>. Una propiedad de navegación se establece usando una propiedad virtual ICollection Nombre.
  3. Tipos complejos: Cuando Code First no puede inferir la llave primaria, o esta no es registrada, se crea automáticamente un tipo complejo.

Teniendo presente esto, podemos tener definidas nuestras clases de la forma:

    public class Pais
    {
        public int Id { getset; }
        public string Nombre { getset; }
        public virtual  ICollection<Ciudad> Ciudades { getset; }
    }
    public class Ciudad
    {
        public int Id { getset; }
        public int PaisId { getset; }
        public string Nombre { getset; }
    }

Una vez definidas las entidades vamos a crear un contexto para trabajar, en Code First el contexto lo definimos con una clase que implemente de DbContext, esta es una clase que abstrae muchas de las funcionalidades que veíamos en ObjectContext, si llegáramos a necesitar cualquier cosa de ObjectContext podríamos hacer uso de esta cuando quisiéramos :). DbContext viene a trabajar de la mano con DbSet que viene siendo lo que veíamos (o mejor ni veíamos) como ObjectSet, teniendo esto claro tenemos entonces un contexto definido así:

public class MiContexto : DbContext
{
        public DbSet Paises { get; set; }
        public DbSet Ciudades { get; set; }
}

Con esto ya tenemos definido un contexto con el que podemos empezar a trabajar. Todas las consultas que hagamos y que hagan uso del contexto serán almacenadas en localhost\SQLEXPRESS. Para emplear otro almacén físico de datos bastara con crear un connection string normal [como el que empleábamos con Ado.Net] para reflejar los cambios allí.

En los próximos post veremos casos más complejos.

Hasta el próximo post.

Anuncios
[Entity framework 4.1] Sobre Code First – DBContext y BDSet

3 comentarios en “[Entity framework 4.1] Sobre Code First – DBContext y BDSet

  1. gsfagr dijo:

    Hola!! Estoy haciendo una aplicación web con Code First y DbContext.

    Tengo que gestionar unos archivos xml. Las entidades las creé con Code First y las tablas con DbContext. Pero mi duda es como hago para descargar la información del xml a mi base de datos.

    Estuve mirando Linq to Xml, pero no me aclaro muy bien.

    A ver si me puedes echar una mano.

    Gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s