Wie ändert sich [DisplayName] von EF generierten Klasseneigenschaften?

8

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.

EF generierte Klasse

%Vor%

Anzeigen

%Vor%     
James123 25.03.2013, 18:58
quelle

3 Antworten

10

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.

    
Moho 25.03.2013, 20:41
quelle
5

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:

%Vor%

Und CodeStringGenerator.UsingDirectives() mit:

%Vor%

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:

%Vor%     
user3760491 20.06.2014 14:45
quelle
2

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

    
Wasa 01.08.2013 05:48
quelle