重新生成 EntityModel 即 DataContract
Regenerate EntityModel which is DataContract
我有一个由 Entity Framework 使用数据库优先方法生成的数据模型。此 dataModel 位于 WCF 服务中,并通过多种方法返回给客户端。在客户端应用程序中,类型 CreationType
在服务引用中声明(通过更新服务引用)。
// This code was generated from a template.
[DataContract]
public partial class CreationType
{
public CreationType()
{
this.Quotes = new HashSet<Quote>();
}
[DataMember]
public int CreationTypeId { get; set; }
[DataMember]
public string Code { get; set; }
[DataMember]
public string NameFr { get; set; }
[DataMember]
public string NameEn { get; set; }
}
问题是:有没有办法在不丢失 WCF 属性的情况下重新生成模型?我的意思是,它们可以在非生成文件中声明并应用于生成的部分 class 或其他内容吗?
我不需要所有属性都是 DataMember 并且我不希望每个 EntityModel 都是 DataContract。
为此,您可以编辑生成 EF classes 的模板。通过编辑 T4 模板,您可以控制 EF class 生成器的行为。
您正在寻找文件 *.tt
或更具体地说:YourModelName.tt
在此文件中,您可以找到与 EF classes 一起生成的规则。
以下是应该更改的行:
[DataContract]
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
下一行是:
[DataMember]
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
您可能还需要添加这一行:
<#@ import namespace="System.Runtime.Serialization" #>
本节中:
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
我有一个由 Entity Framework 使用数据库优先方法生成的数据模型。此 dataModel 位于 WCF 服务中,并通过多种方法返回给客户端。在客户端应用程序中,类型 CreationType
在服务引用中声明(通过更新服务引用)。
// This code was generated from a template.
[DataContract]
public partial class CreationType
{
public CreationType()
{
this.Quotes = new HashSet<Quote>();
}
[DataMember]
public int CreationTypeId { get; set; }
[DataMember]
public string Code { get; set; }
[DataMember]
public string NameFr { get; set; }
[DataMember]
public string NameEn { get; set; }
}
问题是:有没有办法在不丢失 WCF 属性的情况下重新生成模型?我的意思是,它们可以在非生成文件中声明并应用于生成的部分 class 或其他内容吗?
我不需要所有属性都是 DataMember 并且我不希望每个 EntityModel 都是 DataContract。
为此,您可以编辑生成 EF classes 的模板。通过编辑 T4 模板,您可以控制 EF class 生成器的行为。
您正在寻找文件 *.tt
或更具体地说:YourModelName.tt
在此文件中,您可以找到与 EF classes 一起生成的规则。
以下是应该更改的行:
[DataContract]
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
下一行是:
[DataMember]
<#=PropertyVirtualModifier(Accessibility.ForProperty(edmProperty))#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
您可能还需要添加这一行:
<#@ import namespace="System.Runtime.Serialization" #>
本节中:
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>