Hinzufügen von serialisierbaren Attributen in allen Entitäten, die von Entity Framework 5.0 generiert werden

8

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]

kennzeichnen

Wie ändert man die Vorlage, um das serialisierbare Attribut hinzuzufügen?

    
Imran Rizvi 29.05.2013, 10:15
quelle

6 Antworten

5

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.

    
Imran Rizvi 29.05.2013, 10:15
quelle
11

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:

%Vor%

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.

    
Marc Gravell 29.05.2013 10:25
quelle
11

wenn Sie Entity Framework 5.0 oder höher verwenden Fügen Sie [Serializable] -Tag zwischen diesen Code hinzu:

%Vor%     
nazim hatipoglu 09.07.2014 15:01
quelle
8

Für Entity Framework 6, fügen Sie Serializable über diese beiden Teile bei Model.tt

hinzu %Vor%     
Tony Dong 30.10.2015 22:44
quelle
3

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.

    
Seun S. Lawal 30.09.2016 14:39
quelle
0

Für EF 6 Versuchen Sie, den folgenden Code in .tt file zu finden:

%Vor%

Es hat einen String-Platzhalter ("{0} {1}partial class {2}{3}") , den Sie beliebig ändern können

    
Foad Alavi 16.09.2015 05:43
quelle

Tags und Links