Debe abrir su archivo model1.tt
(o lo que se llame en su proyecto) y agregar algunas cosas.
Localizar estas líneas de código (línea 34, en mi caso):
// Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(entity.Name + ".cs");
Justo antes de esta línea aquí:
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
necesita añadir el atributo [DataContract]
:
[DataContract]
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
a su plantilla.
A continuación, localice esta línea de código:
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Antes de esa línea, añadir el atributo [DataMember]
a su plantilla:
[DataMember]
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Esto agregará esos atributos para todas las entidades y todas las propiedades - eso podría no ser lo que realmente quieres, pero es un comienzo.
también: para terminar, es probable que desee echar un vistazo a la función WriteHeader
en su plantilla de T4, y añadir la declaración using System.Runtime.Serialization;
a su lista de usings:
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Runtime.Serialization; // add this to handle DataContract/DataMember
Gracias, exactamente lo que necesito, creo que podría empezar a entender T4 minuto a minuto, i sólo tiene algunas correcciones rápida en este momento. Por favor, ¿me pueden ayudar en dónde agrego usando espacios de nombres en cada entidad? –
Lo he encontrado, gracias. –
@gtas: actualicé mi respuesta: deberá incluir el espacio de nombres adicional 'System.Runtime.Serialization' para manejar los atributos DataContract/DataMember –