Geo*_*kos 15 wcf t4 poco entity-framework-4 c#-4.0
我想帮助添加POCO .tt实体框架模板属性以支持WCF序列化,以及是否可能如何将命名空间使用添加到每个实体.
谢谢.
mar*_*c_s 47
您需要打开model1.tt文件(或项目中调用的任何文件),并添加一些内容.
找到这些代码行(在我的例子中,第34行):
// Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(entity.Name + ".cs");
Run Code Online (Sandbox Code Playgroud)
就在这一行之前:
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
Run Code Online (Sandbox Code Playgroud)
你需要添加[DataContract]属性:
[DataContract]
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
Run Code Online (Sandbox Code Playgroud)
到你的模板.
接下来,找到这行代码:
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Run Code Online (Sandbox Code Playgroud)
在该行之前,将[DataMember]属性添加到模板中:
[DataMember]
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
Run Code Online (Sandbox Code Playgroud)
这将为所有实体和所有属性添加这些属性 - 这可能不是您真正想要的,但它是一个开始.
另外:要完成,您可能想要查看WriteHeaderT4模板中的函数,并将该using System.Runtime.Serialization;语句添加到您的使用列表中:
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Runtime.Serialization; // add this to handle DataContract/DataMember
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17256 次 |
| 最近记录: |