Wie füge ich Datenannotationen für Entitäten hinzu, die automatisch von Data-First erstellt werden?

8

Bei Modell-zuerst verwenden wir [MetadataType(typeof(ConceptMetadataSource))] , um eine MetadataSource-Datei anzuhängen, die alle Datenanmerkungen wie [HiddenInput(DisplayValue = false)] oder [Display(Name = "Title")] enthält.

Zum Beispiel:

%Vor%

Jetzt verwende ich den Ansatz "Datenbank zuerst", da es eine vorhandene Datenbank gibt. Dieses Mal werden die Entitätsklassen automatisch vom edmx-Modell erstellt. Zu Beginn jeder Entitätsklasse gibt es folgende Kommentarzeilen:

%Vor%

Da der Code neu generiert wird, sobald wir eine Tabelle in der Datenbank geändert haben, werden die Datenannotationen jedes Mal gelöscht, wenn die Entitätsklassen neu generiert werden.

Kann mir jemand sagen, was die beste Methode ist, um diese Entitätsklassen zu kommentieren? Danke.

    
Blaise 19.01.2012, 19:38
quelle

3 Antworten

6

Okay, hier ist die Antwort.

Der Trick ist, dass die automatisch generierten Klassen alle Teilklassen sind. Der Kompilierungsprozess kombiniert alle Teilklassen mit demselben Namen.

Wenn wir public partial class Concept von DbContext generiert haben, müssen wir nur einen weiteren erstellen, der mit public partial class Concept gestartet wurde. Diese neue partielle Klasse kann in einem anderen Ordner erstellt werden, aber wir müssen ihren Namespace genauso aktualisieren wie die automatisch generierte partielle Klasse.

In dieser neu erstellten Teilklasse können wir alle Arten von Datenanmerkungen wie

hinzufügen %Vor%

Oder wir können sogar neue Eigenschaften wie

hinzufügen %Vor%

Wenn das Modell erneut aus der Datenbank aktualisiert wird, werden nur die automatisch generierten partiellen Klassen aktualisiert. Diejenigen neu manuell hinzugefügten partiellen Klassen, die unsere Anmerkungen und andere Manipulationen enthalten, bleiben intakt.

    
Blaise 07.05.2012, 15:47
quelle
12

Alles, was Sie tun müssen, ist eine andere partielle Klasse zu erstellen und das Attribut metadatatype zu verwenden. Hier ist der Beispielcode

%Vor%

Fügen Sie den folgenden Code manuell hinzu

%Vor%     
Rakesh Nandrajog 06.02.2013 15:55
quelle
0

Definieren Sie ein Ansichtsmodell wie

%Vor%     
John x 19.01.2012 19:48
quelle