È necessario aprire il file model1.tt
(o qualsiasi altra cosa si chiami nel progetto) e aggiungere alcune cose.
Individuare queste righe di codice (linea 34, nel mio caso):
// Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(entity.Name + ".cs");
Poco prima di questa linea qui:
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
è necessario aggiungere l'attributo [DataContract]
:
[DataContract]
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
al modello.
Avanti, individuare questa riga di codice:
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Prima di quella linea, aggiungere l'attributo [DataMember]
al modello:
[DataMember]
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Ciò aggiungere tali attributi per tutti gli enti e tutte le proprietà - potrebbe non essere quello che vuoi veramente, ma è un inizio.
anche: per finire, probabilmente vuole avere uno sguardo alla funzione di WriteHeader
nel modello T4, e aggiungere l'istruzione using System.Runtime.Serialization;
alla tua lista di usings:
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Runtime.Serialization; // add this to handle DataContract/DataMember
Grazie, esattamente quello che mi serve, penso che potrei iniziare a capire T4 minuto per minuto, ho solo bisogno di alcune correzioni veloce al momento. Si prega di fornire un aiuto su dove aggiungo utilizzando namespace su ciascuna entità? –
L'ho trovato, grazie. –
@gtas: aggiornata la mia risposta - è necessario includere lo spazio dei nomi aggiuntivo 'System.Runtime.Serialization' per gestire gli attributi DataContract/DataMember –