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

C# 向EF生成的类中的属性/字段添加XML文档/注释,c#,entity-framework,documentation,C#,Entity Framework,Documentation,我有使用标准XML文档注释属性和类的习惯,这意味着什么/它们做什么 但是在EF生成的类中,当我重新生成模型时,这些类都消失了 是否有其他方法可以做到这一点?否。您必须修改用于生成类的T4模板(或创建用于生成类的新自定义工具),以便为您提供这些注释 正如拉迪斯拉夫在回答中所说,您需要修改T4模板,以便在生成的代码中包含注释。这个答案来自: 首先,需要在模型设计器的“属性”框中指定注释。在文档->详细说明和摘要下 然后在模板中,您可以在要记录的属性上方添加以下内容: <#if (!Refere

我有使用标准XML文档注释属性和类的习惯,这意味着什么/它们做什么

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


是否有其他方法可以做到这一点?

否。您必须修改用于生成类的T4模板(或创建用于生成类的新自定义工具),以便为您提供这些注释

正如拉迪斯拉夫在回答中所说,您需要修改T4模板,以便在生成的代码中包含注释。这个答案来自:

首先,需要在模型设计器的“属性”框中指定注释。在文档->详细说明和摘要下

然后在模板中,您可以在要记录的属性上方添加以下内容:

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

/// 
///  – 
/// 

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

EF生成的类都是“部分”类。因此,定义一个具有相同类骨架结构的新文件,并定义对这些文件的注释

例如:

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

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

///学生文档。。。
公立部分班学生{}

这是一个非常古老的线程,但目前还不清楚t4中该代码的插入位置。截至撰写本文时,t4的版本如下。这也会将LongDescription放在备注部分(如果存在)

之前的代码:

<#
    }

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

插入的代码:

<#
            if (!ReferenceEquals(edmProperty.Documentation, null))
            {
#>

    /// <summary>
    /// <#=edmProperty.Documentation.Summary#>
    /// </summary>
<#              if (edmProperty.Documentation.LongDescription.Length > 0)
                {#>
    /// <remarks>
    /// <#=edmProperty.Documentation.LongDescription#>
    /// </remarks>
<#              }
            }#>

/// 
/// 
/// 
0)
{#>
/// 
/// 
/// 
后续代码:

<#
    }

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


看起来不错!不知道你可以编辑EF用来生成代码的模板。有没有关于在磁盘上哪里可以找到这些模板的提示?我想我必须在每台开发人员机器上编辑这些模板?我可能无法告诉EF必须使用VS解决方案中的某个模板?@Michel:如果你右键单击在edmx中,您可以“添加代码生成项”。您可以根据需要修改此文件。您还应将此文件作为项目的一部分置于源代码管理下,以便可以重用。