Wir wissen, dass EF Klassen basierend auf Tabellen generiert, die wir zu .edmx
file hinzugefügt haben. Welches nicht [DisplayName] DataAnnotations für sie.
Wie kann ich diesen [DisplayName] von generierten Klassen hinzufügen, ohne sie zu ändern? weil generierte Klassen überschrieben werden können, wenn ich die .edmx
-Datei ändere (die geänderte Tabelle hinzufügen), wenn sich die Datenbank ändert. Daher möchte ich die Klasse selbst nicht ändern.
Verwenden Sie eine Metadatenklasse, und hängen Sie sie über das MetadataTypeAttribute an Ihre Entitätsklasse an. Sie geben Ihre Datenanmerkungsattribute für die Eigenschaften in der Metadatenklasse an (keine Implementierung für diese Eigenschaften).
MSDN: Ссылка
Edit: Ein initialer Fehler ist der Namespace der partiellen Klasse, die Sie zum Anhängen des MetadataTypeAttribute definieren. Stellen Sie sicher, dass Sie seinen Namespace in den Namespace ändern, der von der ursprünglichen Entität verwendet wird, damit sie dieselbe Klasse definiert.
Sie können die Template-Tt-Datei ändern, die Klassencode generiert, um die Documentation-Eigenschaft Ihres Modells zum Generieren von Klassen mit benötigten Attributen zu verwenden.
Zum Beispiel für EF5 können Sie ersetzen in * Model.tt Methode CodeStringGenerator.Property()
von:
Und CodeStringGenerator.UsingDirectives()
mit:
Danach wird die Documentation.Summary
-Eigenschaft in Modell und Vorlage gesetzt. tt generiert alle Klassen mit geeigneten Attributen, ohne die Metadatenklasse zu verwenden und sie über das MetadataTypeAttribute an Ihre Entitätsklasse anzuhängen.
Zum Beispiel:
Beachten Sie, dass die generierte Klasse eine partielle Klasse ist. Sie können also eine weitere Teilklasse mit demselben Namen erstellen und die Annotation dazu ausführen. Dann wird die zweite partielle Klasse nicht aktualisiert, wenn Sie die EDMX-Datei ändern.
Mehr zu MVC DB zuerst Fix Anzeige Name
Tags und Links asp.net-mvc entity-framework ef-database-first asp.net-mvc-4