在EF生成的类中向属性/字段添加XML文档/注释

本文关键字:字段 添加 XML 注释 文档 属性 EF | 更新日期: 2023-09-27 18:10:38

我习惯在标准XML文档中注释属性和类,说明它们的含义/作用。

但是在EF生成的类中,当我重新生成模型时,这些都消失了。

还有别的方法吗?

在EF生成的类中向属性/字段添加XML文档/注释

正如Ladislav在他的回答中所述,您需要修改T4模板,以便将注释包含在生成的代码中。这个答案摘自本文:

首先,您需要在模型设计器的属性框中指定注释。在文档->长描述和摘要下。

然后在模板中,例如,你可以在你想要记录的属性上面添加this:

<#if (!ReferenceEquals(edmProperty.Documentation, null))
{
#>
/// <summary>
/// <#=edmProperty.Documentation.Summary#> – <#=edmProperty.Documentation.LongDescription#>
/// </summary>
<#}#>

这将在生成的代码的属性上方创建一个摘要块

No。您必须修改用于生成类的T4模板(或为类生成创建新的自定义工具)来为您做出这些注释。

EF生成的类都是"partial"类。因此,定义一个具有相同类骨架结构的新文件,并在其上定义您的注释。

的例子:

EF生成类(Model.designer.cs):

public partial class Student : EntityObject {... // bunch of generated code}

您自己的文件(modeldocument .cs):

/// <summary> Student documentation... </summary>
public partial class Student {}

这是一个非常古老的线程,但它不是立即清楚在t4中插入的代码。在撰写本文时,t4的版本如下。如果存在的话,这也会将LongDescription放到comments部分中。

前夕代码:

<#
    }
    var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
插入代码:

<#
            if (!ReferenceEquals(edmProperty.Documentation, null))
            {
#>
    /// <summary>
    /// <#=edmProperty.Documentation.Summary#>
    /// </summary>
<#              if (edmProperty.Documentation.LongDescription.Length > 0)
                {#>
    /// <remarks>
    /// <#=edmProperty.Documentation.LongDescription#>
    /// </remarks>
<#              }
            }#>
成功代码:

    <#=codeStringGenerator.Property(edmProperty)#>