开发者

Add XML documentation / comments to properties/fields in EF generated classes

开发者 https://www.devze.com 2023-04-11 07:49 出处:网络
i have the habbit to comment properties and classes with the standard XML documentation, what it means / what they do开发者_开发问答.

i have the habbit to comment properties and classes with the standard XML documentation, what it means / what they do开发者_开发问答.

But in EF generated classes off course, these are all gone when i regenerate the model.

Is there another way to do this?


As Ladislav stated in his answer, you need to modify the T4 template so the comments will be included in the generated code. This answer was taken from this article:

First of all you need to specify your comments in the properties boxes of the model designer. Under Documentation -> Long Description, and Summary.

Then in the template, you can for example add this above the property you want to document:

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

This will create a summary block above your property in the generated code.


No. You will have to modify your T4 template used to generate classes (or create new custom tool for class generation) to make these comments for you.


The EF generated classes are all "partial" classes. So, define a new file with the same class skeleton structure, and define your comments on those.

Example:

The EF generated class (Model.designer.cs):

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

Your own file (ModelDocumentation.cs):

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


This is a very old thread, but it wasn't immediately clear where in the t4 this code is inserted. The version of the t4 as of this writing follows. This also puts the LongDescription in the Remarks section, if it exists.

Preceeding code:

<#
    }

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

Inserted code:

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

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

Succeeding code:

    <#=codeStringGenerator.Property(edmProperty)#>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号