Сначала добавьте документацию к сгенерированному коду в модели инфраструктуры объектов

Впервые я использую модель Entity Framework с VS 2010. Когда я строю свой проект, EF генерирует файл Model.Designer.cs, содержащий все сущности. Этот файл конструктора также содержит документацию, добавленную к объектам в файле EDMX.

Когда я создал новый проект модели EF в VS 2012, файл Model.tt был добавлен в мой файл EDMX. Этот шаблон T4 генерирует один файл для каждой сущности в моей модели. К сожалению, документация из файла EDMX не используется в сгенерированном коде.

Мне действительно нравится документировать мою модель, поэтому IntelliSense обнаруживается при ее использовании. Единственный обходной путь, который я нашел, - это удалить Model.tt и сгенерированные файлы классов и снова включить генерацию кода для моего файла EDMX. Это возвращает нас к поведению, которое я использовал в VS 2010. Однако я бы предпочел иметь отдельный файл для каждой сущности.

Есть ли способ (желательно с использованием инструментов VS и без необходимости изменять какие-либо файлы, поставляемые с VS), чтобы включить документацию из файла EDMX в сгенерированные файлы одного класса?

Изменить: Чтобы проиллюстрировать мою проблему, вот быстрый пример.

Позволять'скажем, моя модель выглядит так:

Я выделил ту часть, в которую я ввел документацию, в окне «Свойства» свойства Id.

Вот как выглядит объект в файле EDMX:

    
      
        
      
      
        
          This is documentation for the ID property.
        
      
    

Сгенерированный класс (Entity1.cs) от Model.tt выглядит так:

public partial class Entity1
{
    public int Id { get; set; }
}

Но когда я включаю генерацию кода для моей модели, вот как выглядит объект в Model.Designer.cs:

/// 
/// No Metadata Documentation available.
/// 
[EdmEntityTypeAttribute(NamespaceName="Model1", Name="Entity1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Entity1 : EntityObject
{
    #region Factory Method

    /// 
    /// Create a new Entity1 object.
    /// 
    /// Initial value of the Id property.
    public static Entity1 CreateEntity1(global::System.Int32 id)
    {
        Entity1 entity1 = new Entity1();
        entity1.Id = id;
        return entity1;
    }

    #endregion

    #region Simple Properties

    /// 
    /// This is documentation for the ID property.
    /// 
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.Int32 Id
    {
        get
        {
            return _Id;
        }
        set
        {
            if (_Id != value)
            {
                OnIdChanging(value);
                ReportPropertyChanging("Id");
                _Id = StructuralObject.SetValidValue(value, "Id");
                ReportPropertyChanged("Id");
                OnIdChanged();
            }
        }
    }
    private global::System.Int32 _Id;
    partial void OnIdChanging(global::System.Int32 value);
    partial void OnIdChanged();

    #endregion

}

Итак, вы видите: Model.Designer.cs содержит мою пользовательскую строку документации "Это документация для удостоверения личности. " в то время как Entity1.cs нет. Однако Model.Designer.cs может стать довольно большим, если в нем много сущностей, а отладка в этом файле несколько медленная. Я'Я предпочел бы иметь несколько небольших файлов (по одному на сущность), но при этом сохранить документацию из файла EDMX в сгенерированном коде.

Ответы на вопрос(1)

Ваш ответ на вопрос