將資料註釋新增到生成的模型中

在 Entity Framework 5 及更高版本使用的 T4 程式碼生成策略中,預設情況下不包括資料註釋屬性。要在每個模型重新生成的特定屬性之上包含資料註釋,請使用 EDMX 附帶的開啟模板檔案(使用 .tt 副檔名),然後在 UsingDirectives 方法下新增 using 語句,如下所示:

foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>
(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations;  // --> add this line

例如,假設模板應包含指示主鍵屬性的 KeyAttribute。要在重新生成模型時自動插入 KeyAttribute,請找到包含 codeStringGenerator.Property 的部分程式碼,如下所示:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

然後,插入 if 條件以檢查鍵屬性,如下所示:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
             if (ef.IsKey(edmProperty)) { 
#>    [Key]
<#      } 
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

通過應用上述更改,從資料庫更新模型後,所有生成的模型類將在其主鍵屬性上具有 KeyAttribute

之前

using System;

public class Example
{
    public int Id { get; set; }
    public string Name { get; set; }
}

using System;
using System.ComponentModel.DataAnnotations;

public class Example
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}