我有habbit用标准XML文档评论属性和类,它意味着什么/他们做什么。
但是在EF生成的课程中,当我重新生成模型时,这些都已经消失了。
还有其他办法吗?
答案 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)#>