Ich verwende EF 5.0, um POCO-Entitäten zu generieren und sie in einer separaten Datenzugriffsschicht zu verwenden
Ich möchte alle Entitäten [Serializable]
kennzeichnenWie ändert man die Vorlage, um das serialisierbare Attribut hinzuzufügen?
Im Folgenden finden Sie die entsprechenden Schritte:
1) Öffnen Sie die Datei ModelName.Entity.tt
2) Suchen Sie folgende Zeichenfolge in dieser Datei
%Vor%3) Schreiben Sie [Serializable] über diese Zeile, damit der Code so aussieht
%Vor%Speichern Sie die Datei, öffnen Sie die Entity-Datei, Sie können sehen, dass das Wunsch-Tag geschrieben wurde, Sie müssen noch nicht einmal Entitäten generieren.
Wenn Sie die Vorlage nicht bearbeiten möchten, können Sie dies auch in einer separaten Codedatei tun - wegen der Bequemlichkeit von partial
classes. Wenn also die Typen Foo
, Bar
und Baz
im Namespace My.Namespace
sind, können Sie im selben Projekt eine separate -Datei erstellen mit:
Dies wird dann mit der generierten Hälfte zusammengeführt, indem das Attribut [Serializable]
angewendet wird. Sie können damit auch eigene Methoden zu den Typen hinzufügen oder den Text für jede partial
-Methodenimplementierung bereitstellen, die die Vorlage deklariert.
Ich sollte Sie jedoch warnen: [Serializable]
empfiehlt, dass Sie BinaryFormatter
verwenden; das ist nicht notwendigerweise ein guter Kandidat. Es wäre besser, sich auf Contract-basierte Serializer zu konzentrieren. Ich wäre sehr überrascht, wenn die EF-Vorlage nicht bereits die Möglichkeit hätte, Attribute für DataContractSerializer
(speziell [DataContract]
/ [DataMember]
) auszugeben. BinaryFormatter
kann sehr problematisch sein, wenn Sie Ihre Software versionieren.
wenn Sie Entity Framework 5.0 oder höher verwenden Fügen Sie [Serializable] -Tag zwischen diesen Code hinzu:
%Vor%Hier ist, was Sie für EF 6 (mindestens) tun;
Suchen Sie in Ihrer Datei model.tt nach folgenden Zeilen:
%Vor%Ändern Sie es zu diesen:
%Vor% Speichern Sie Ihre .tt-Datei und Ihre Entitätsklassendateien erhalten [Serializable]
Attribute auf ihnen.
Fertig.
Für EF 6 Versuchen Sie, den folgenden Code in .tt
file zu finden:
Es hat einen String-Platzhalter ("{0} {1}partial class {2}{3}")
, den Sie beliebig ändern können
Tags und Links c# entity-framework