如何为生成的实体自动添加数据注释?
How to automatically add data annotations to generated Entities?
我有一堆实体 类 从数据库连接自动生成。我想自动添加数据注释,例如,如果列的类型为 varchar(100),那么我想要数据注释 [StringLength(100)]
,或者如果它不是可为空的字段,我'我想有 [Required]
注释。这可能吗?
我发现的唯一问题 is almost 10 years old 和当时的答案不再有效。
在此先感谢您的帮助。
通过更多的研究和反复试验,我设法做到了。基本上它涉及编辑由 Entity Framework.
生成的 T4 模板
添加 ADO.NET Entity Data Model
> EF Designer from data...
后,您会得到一个 EDMX 文件,如果您在 Visual Studio 上展开它,则会有一个与 .tt 文件同名的 .tt 文件。 edmx 文件。
在该文件中,我在 <#=codeStringGenerator.UsingDirectives(inHeader: false)#>
下添加了 using
数据注释语句:
using System.ComponentModel.DataAnnotations;
然后,下面几行,在 simpleProperties
声明之后,在 foreach
中,我添加了以下内容:
foreach (var edmProperty in simpleProperties) // <-- Original foreach statement
{
if(edmProperty.Nullable == false)
{
#> [Required]
<#
}
if(edmProperty.MaxLength != null)
{
#> [StringLength(<#=edmProperty.MaxLength#>)]
<#
}
//Rest of the auto-generated code...
保存此文件将相应地更新 auto-generated.cs 文件:
namespace MyNamespace
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class MyModel
{
[Required]
public int Id { get; set; }
[Required]
[StringLength(20)]
public string MyField { get; set; }
}
}
我有一堆实体 类 从数据库连接自动生成。我想自动添加数据注释,例如,如果列的类型为 varchar(100),那么我想要数据注释 [StringLength(100)]
,或者如果它不是可为空的字段,我'我想有 [Required]
注释。这可能吗?
我发现的唯一问题 is almost 10 years old 和当时的答案不再有效。
在此先感谢您的帮助。
通过更多的研究和反复试验,我设法做到了。基本上它涉及编辑由 Entity Framework.
生成的 T4 模板添加 ADO.NET Entity Data Model
> EF Designer from data...
后,您会得到一个 EDMX 文件,如果您在 Visual Studio 上展开它,则会有一个与 .tt 文件同名的 .tt 文件。 edmx 文件。
在该文件中,我在 <#=codeStringGenerator.UsingDirectives(inHeader: false)#>
下添加了 using
数据注释语句:
using System.ComponentModel.DataAnnotations;
然后,下面几行,在 simpleProperties
声明之后,在 foreach
中,我添加了以下内容:
foreach (var edmProperty in simpleProperties) // <-- Original foreach statement
{
if(edmProperty.Nullable == false)
{
#> [Required]
<#
}
if(edmProperty.MaxLength != null)
{
#> [StringLength(<#=edmProperty.MaxLength#>)]
<#
}
//Rest of the auto-generated code...
保存此文件将相应地更新 auto-generated.cs 文件:
namespace MyNamespace
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public partial class MyModel
{
[Required]
public int Id { get; set; }
[Required]
[StringLength(20)]
public string MyField { get; set; }
}
}