En nuestra aplicación, estamos utilizando el generador de entidades EF4.0 y POCO para generar entidades desde la base de datos. Para aplicar la anotación de datos, estamos creando Interfaces e implementando esas interfaces en las clases parciales que hemos creado para que coincida con la clase parcial generada mediante el uso de EF.Obtener atributos personalizados aplicados a las entidades generadas mediante el atributo MetadataType
/*Entity Generated Type*/
public partial class SomeEntity : EntityBase
{
public virtual string SomeProperty
{
get {...}
set {...}
}
}
/*Interface containing metadata*/
public interface ISomeEntityMetadata
{
[SomeCustomAttribute]
string SomeProperty { get; set; }
}
/*Partial matching class for interface*/
[MetadataType(typeof(ISomeEntityMetadata))]
public partial class SomeEntity : ISomeEntityMetadata
{
}
Ahora, utilizando la reflexión, cuando tratamos de conseguir si se aplica 'SomeCustomAttribute' en 'SomeEntity.SomeProperty', devuelve que no se aplica el atributo.
Si editamos el código generado y aplicamos el atributo directamente, funciona.
Si comprobamos que las clases parciales se fusionen para formar un solo tipo, lo hace.
Si buscamos que el atributo MetadataType se aplique en el tipo (usando reflexión), lo es.
Además, cuando la entidad está vinculada a cualquier elemento UI de WPF, las validaciones funcionan como deberían pero, al utilizar la reflexión, no podemos encontrar los Atributos de validación y/o los Atributos personalizados aplicados en la propiedad.
Cualquier ayuda o información salvaría un alma.
mira esto, ya he respondido esta pregunta aquí http://stackoverflow.com/a/24757520/3050647 – elia07