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

时间:2011-10-06 09:46:08

标签: c# entity-framework documentation

我有habbit用标准XML文档评论属性和类,它意味着什么/他们做什么。

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

还有其他办法吗?

4 个答案:

答案 0 :(得分:11)

正如Ladislav在回答中所说,您需要修改T4模板,以便将注释包含在生成的代码中。这个答案来自this article

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

然后在模板中,您可以将其添加到要记录的属性上方:

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

示例:

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

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

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

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

答案 3 :(得分:0)

这是一个非常老的线程,但是尚不清楚该代码在t4中的插入位置。以下是撰写本文时t4的版本。如果存在,这还将把LongDescription放入“备注”部分。

前面的代码:

<#
    }

    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)#>