在EF生成的类中向属性/字段添加XML文档/注释
本文关键字:字段 添加 XML 注释 文档 属性 EF | 更新日期: 2023-09-27 18:10:38
我习惯在标准XML文档中注释属性和类,说明它们的含义/作用。
但是在EF生成的类中,当我重新生成模型时,这些都消失了。
还有别的方法吗?
正如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)#>