Я хотел бы добавить больше деталей к ответу Мэтта Мхеттона, потому что из-за моей текущей конфигурации проекта (CA и Style Cop) все ДОЛЖНО быть задокументировано.
С одной стороны, вам нужно будет добавить свойства документации в дизайнере для всего, что вы хотите задокументировать (классы, простые свойства, сложные свойства и свойства навигации).
С другой стороны, вам нужно открыть созданный вами WhateverModel.tt и отредактировать его, чтобы он содержал документацию, я объясню это шаг за шагом:
1.- Чтобы найти документацию класса, найдите:
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
<#=codeStringGenerator.EntityClassOpening(entity)#>
(строка 26 в моем случае) и поместите свои комментарии между этими двумя строками, например:
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
<# if (entity != null && entity.Documentation != null) {#>
/// <summary>
/// <#= entity.Documentation.Summary #>
/// </summary>
<# } #>
<#=codeStringGenerator.EntityClassOpening(entity)#>
2.- Для документации конструктора найдите public <#=code.Escape(entity)#>()
, что создает конструктор, поэтому поместите свою документацию непосредственно перед этой строкой, например:
<# if (entity != null && entity.Documentation != null) {#>
/// <summary>
/// <#= entity.Documentation.Summary #>
/// </summary>
<# } #>
public <#=code.Escape(entity)#>()
{
3.- Чтобы задокументировать каждое свойство, найдите foreach (var edmProperty in simpleProperties)
, этот вид будет генерировать код свойств, поэтому он должен выглядеть следующим образом:
foreach (var edmProperty in simpleProperties)
{
#>
<# if (edmProperty != null && edmProperty.Documentation != null) {#>
/// <summary>
/// <#= edmProperty.Documentation.Summary #>
/// </summary>
<# } #>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
(ПРИМЕЧАНИЕ: это для простых свойств, но для сложных свойств будет то же самое...)
4.- Для точно таких же свойств навигации найдите foreach (var navigationProperty in navigationProperties)
и добавьте свою документацию следующим образом:
foreach (var navigationProperty in navigationProperties)
{
#>
<# if (navigationProperty != null && navigationProperty.Documentation != null) {#>
/// <summary>
/// <#= navigationProperty.Documentation.Summary #>
/// </summary>
<# } #>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
}
4. И последнее, но не менее важное: если вам также нужна документация в вашем классе контекста, вы можете использовать это (ищите <# if (code.Escape(container) != null) {#>
):
<# if (code.Escape(container) != null) {#>
/// <summary>
/// Represents <#= code.Escape(container) #>
/// </summary>
<# } #>
<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
<# if (code.Escape(container) != null) {#>
/// <summary>
/// Initializes a new instance of the <see cref="<#= code.Escape(container) #>"/> class.
/// </summary>
<# } #>
public <#=code.Escape(container)#>()
: base("name=<#=container.Name#>")
{
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
this.Configuration.LazyLoadingEnabled = false;
<#
}
#>
}
/// <summary>
/// On Model Creating
/// </summary>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
<#
foreach (var entitySet in container.BaseEntitySets.OfType<EntitySet>())
{
#>
<# if (code.Escape(entitySet) != null) {#>
/// <summary>
/// Gets or sets the <#=code.Escape(entitySet)#>
/// </summary>
<# } #>
Я надеюсь, что это поможет, как ответ Мэтта Уеттона помог мне (спасибо, Мэтт).
person
Juan
schedule
09.03.2016