2011-03-22 5 views
9

Hace algún tiempo me hizo esta pregunta: What is the purpose of each of the System.ComponentModel.DataAnnotations attributes?¿Cómo uso System.ComponentModel.DataAnnotations.AssociationAttribute

Sin embargo, no tenía suerte con conseguir respuestas. Esta pregunta era un poco amplia en el sentido de que pedía documentación sobre cada atributo de la anotación de datos. En este momento, estoy más interesado en el atributo Association.

Estoy utilizando ASP.NET MVC3 con Entity Framework 4 y me gustaría anotar mis POCO. Estoy usando claves externas en mis POCO (de alguna manera me siento mal, pero parece que se acceden generalmente). ¿Cómo anoto mi POCO con el atributo Association? ¿En qué propiedades lo pongo (propiedad Association y/o propiedad de clave externa)? ¿Cuáles son los parámetros thisKey y otherKey? ¿Es thisKey esta clave de POCO, o la clave externa en este POCO?

Por último, ¿qué usará este atributo? ¿Hay algo en ASP.NET MVC?

¡Gracias de antemano!

Respuesta

5

AssociationAttribute (en conjunción con ExternalReferenceAttribute) es utilizada por WCF RIA Services en Silverlight. Con este atributo, el cliente puede resolver asociaciones entre entidades de Dominios diferentes.

Creo que es específico de los Servicios de RIA. Here es un tutorial sobre cómo se aplica en WCF RIA Services.

Un ejemplo sencillo parece

public class Customer{ 
    public int Id {get;set;} 
} 

public class Order{ 

    public int Id {get;set;} 

    public int CustomerId {get;set;} //ForeignKey of the Customer 

    [ExternalReference] 
    [Association("Customer", "CustomerId", "Id")] 
    public Customer {get;set;} 
} 
6

Tenga en cuenta que no todos los atributos proporcionados en el espacio de nombre DataAnnotations están relacionados con Entity framework. Pensé que AssociationAttribute se usa en Linq-to-sql pero en realidad es una clase diferente con el mismo nombre del ensamblado System.Data.Linq. Acabo de comprobar el uso de AssociationAttribute por Reflector y parece que ni Entity Framework (incluido el código primero), ASP.NET MVC, ASP.NET Dynamic data o WPF lo usan.

+0

Tienes toda la razón .. AssociationAttribute no hace nada para EF. – diegohb