Шаблоны первой модели базы данных 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) #>
Здесь я только что добавил вызов в свой метод интерфейсов.
Я знаю, что это не точный ответ, но он должен помочь вам с редактированием файла шаблона самостоятельно. Просто укусите себя за это.:)