ASP.NET MVC 2 Validierung: MetadataType kann nicht auf Standard POCO CLR-Klassen hinzugefügt werden - was eine Alternative?

StackOverflow https://stackoverflow.com/questions/4094913

Frage

Ich bin mit Entity Framework und zum Erzeugen von meinen POCO Klassen über T4 - diese Klassen erben von nichts und sind sehr schlicht und einfach (via Vorlage erstellt in vs 2010)

Ich habe versucht, das MetadataType Attribut mit, damit ich einen Kumpel Klasse schaffen könnte, aber wenn ich das tat ich nicht mehr konnte meine Eigenschaften sehen ... wenn ich das Attribut entfernt! die Eigenschaften erschienen.

Wie auch immer, auf der Suche tiefer fand ich diese Aussage von Microsoft

The associated class must be used with EDM or LINQ-to-SQL models because CLR 
types cannot mark existing properties with new attributes. If you are working with CLR
objects directly, sometimes referred to as Plain Old CLR Object (POCO) types, you can
apply the attributes directly to the model

So scheint es, es funktioniert nicht ?? Wie auch immer seine sehr schwierig für mich auf dem Modell meine Daten Annotation einfügen selbst, weil sein über T4 daher erstellt, wenn ich es bearbeiten und dann das Werkzeug erneut ausführen wird es alle meine Änderungen entfernen.

hat es geschafft, jemand dies zur Arbeit zu kommen?

Ich bin wirklich kämpfen.

War es hilfreich?

Lösung

Es ist ein ziemlich starker Konsens um SO und das MVC-Blogosphäre, dass Sie nicht Ihr Unternehmen / crud / Domain Klassen mit Attributen annotieren sollte. Nicht nur, dass Ihr gesamte MVC-Stack immer abhängig von Ihren Unternehmen / Datenbankklassen, aber Sie werden schnell mit mehreren Kontext-Szenarien (gleiche Modell, verschiedene Validierungsregeln), die unmöglich zu validieren mit nur einem einzigen Modell enden.

Verwenden Sie separate Ansicht Modelle für Ihre Bildschirme, diejenigen mit Anmerkungen versehen.


Basierend auf Ihren Kommentar: „Data Annotation auf das Modell selbst, weil seine über T4 erstellt daher“

Was ich versuche zu sagen, setzen Sie Ihre DataAnnotations auf Ihrem Viewmodel, lassen Sie Ihre POCO Modelle allein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top