將資料註釋新增到生成的模型中
在 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; }
}