Шаблоны первой модели базы данных EF5 (tt) для генерации классов

Я хочу сделать так, чтобы все созданные мной сущности из существующей базы данных наследовали от одного и того же интерфейса.

Я полагаю, это можно сделать с помощью шаблонов. И я видел это безобразно .tt файл, но нет никакой помощи (или я не нашел его).

Есть какая-нибудь документация, примеры... шаблонов?

Существуют ли какие-либо советы или готовые шаблоны для общих парадигм, например, N-Layer Design или Domain Driven Desing?

1 ответ

Решение

Ищите "Шаблоны Т4". Это даст вам представление о шаблонах T4 (.tt файлы). Немного поиска вы можете легко расширить этот шаблон для ваших нужд. Я сделал это сам, но с шаблоном от EF4. Я не знаю, отличаются ли шаблоны.

Я сделал несколько вспомогательных функций для этого:

string Interfaces(EntityType entity)
{
    string interfaces = string.Empty;

    if (entity.Members.OfType<EdmProperty>().Any(edmProperty => edmProperty.Name == "Guid" && ((PrimitiveType)edmProperty.TypeUsage.EdmType).PrimitiveTypeKind == PrimitiveTypeKind.Guid))
    {
        interfaces += ", IHasWritableGuid";
    }

    return interfaces;
}

Часть, в которой шаблон записывает собственно класс сущности (в новом шаблоне это наверняка отличается) немного ниже "Write EntityType classes."в шаблоне EF4.

<#=Accessibility.ForType(entity)#>
<#=code.SpaceAfter(code.AbstractOption(entity))#>
partial class
<#=code.Escape(entity)#> :
<#=BaseTypeName(entity, code)#>
<#= Interfaces(entity) #>

Здесь я только что добавил вызов в свой метод интерфейсов.

Я знаю, что это не точный ответ, но он должен помочь вам с редактированием файла шаблона самостоятельно. Просто укусите себя за это.:)

Другие вопросы по тегам