[Entity Framework] Model First Parte III – Asociaciones y propiedades de navegación

Hola, en el último post de esta miniserie  de Model First que nos ha servido para entender aun más el Model Designer de VisualStudio 2010 y cada una de las propiedades que nuestras entidades pueden manejar. En esta última hablaremos de dos conceptos, las asociaciones y las propiedades de navegación.

– Asociaciones en un EDMX:

Una asociación define una relación entre dos tipos de entidad. En esta se especifican las entidades que estarán implicadas y su multiplicidad, es decir 1-1, 1-*. Como resultado de una asociación obtendremos una propiedad de navegación en las entidades implicadas

– Como crear una Asociación.

Para crear una asociación basta con ubicarnos en el EMX designer, clic contrario Add – Association:

Una vez hecho esto nos saldrá la ventana que nos permitirá crear la asociación:

Las propiedades  que no pide son un nombre para asociación, definir los dos extremos de la asociación, en cada uno se define la multiplicidad, se especifica si se requiere una propiedad de navegación (ya la veremos) y si deseamos agregar una llave foránea en la entidad ciudad y por ultimo en un  se nos describe como quedara la asociación.

Al pulsar ok veremos que el Entity data Model Designer nos ha agregado mágicamente una propiedad de navegación y en la entidad ciudad nos ha generado una propiedad PaisId, además de una flechita que nos representa gráficamente la asociación. Esto se ve de la siguiente forma en nuestro .CSDL:

– Propiedades de navegación:

Como ya vimos una propiedad de navegación es el resultado de una asociación, y proporcionan el medio para navegar entre asociaciones [muy conveniente 😛 ]. Con estas podemos administrar las relaciones en ambos sentidos de la misma, obteniendo un EntityReference si la relación es uno a uno o un EntityCollection si la multiplicidad es a varios.

Por ejemplo la asociación de Pais hacia Ciudad es de uno a varios, y si miramos en el código veremos algo como lo siguiente:

Un punto a tener en cuenta en el momento de emplear propiedades de navegación es el uso de Lazy Loading, se hablo al respecto en esta serie en este post

– Excepciones a su uso:

Mucha gente prefiere no usar propiedades de navegación en sus modelos conceptuales de Entity Framework, y no es para menos 🙂 da miedo que se traiga mas información de la que requerimos en una consulta al tener objetos de otra entidad [problema que se soluciona con el patrón Lazy Load], pero si es tu caso quitarlos, no pasa nada!! 😀 el proyecto compila y anda, solo que te privaras de hacer cosas como la siguiente:

static void Main(string[] args)
{
            using (ModeloContainer context = new ModeloContainer())
            {
                Ciudad ciudad = new Ciudad();
                ciudad.Nombre = "Bogota";
                Pais pais = new Pais();
                pais.Nombre = "Colombia";
                pais.Ciudad.Add(ciudad);
                context.Pais.AddObject(pais);
                context.SaveChanges();
            }
}

Espero les sea de utilidad.

Hasta el próximo post.

Anuncios
[Entity Framework] Model First Parte III – Asociaciones y propiedades de navegación

Un comentario en “[Entity Framework] Model First Parte III – Asociaciones y propiedades de navegación

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