In unserer Anwendung verwenden wir EF4.0 und den POCO-Entitätsgenerator zum Generieren von Entitäten aus der Datenbank. Um die Annotation von Daten anzuwenden, erstellen wir Interfaces und implementieren diese Interfaces für die partiellen Klassen, die wir erstellt haben, um sie an die partielle Klasse anzupassen, die mit EF generiert wurde.Abrufen von benutzerdefinierten Attributen für generierte Entitäten über das MetadataType-Attribut
/*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
{
}
nun mit Reflexion, wenn wir zu erhalten versuchen, wenn ‚SomeCustomAttribute‘ auf ‚SomeEntity.SomeProperty‘ angewendet wird, gibt es, dass das Attribut nicht angewendet wird.
Wenn wir den generierten Code bearbeiten und das Attribut direkt anwenden, funktioniert es.
Wenn wir prüfen, ob die partiellen Klassen zu einem einzigen Typ verschmelzen, ist dies der Fall.
Wenn wir nach dem MetadataType-Attribut suchen, das auf den Typ angewendet wird (mit Reflektion), ist es das.
Wenn die Entität an das UI-Element einer WPF gebunden ist, funktionieren die Validierungen ebenfalls wie erwartet, aber mithilfe der Reflektion können wir die Validierungsattribute und/oder benutzerdefinierten Attribute nicht finden, die auf die Eigenschaft angewendet wurden.
Jede Hilfe oder Hinweise würde eine Seele retten.
Check dies diese aus, ich beantwortet diese Frage bereits hier http://stackoverflow.com/a/24757520/3050647 – elia07