Поделиться через


Общие сведения об TTINCLUDE-файле (платформа Entity Framework)

В данном разделе приведены общие сведения о TTINCLUDE-файле, который содержит классы приложения, работающие вместе с шаблонами ADO.NET в процессе создания кода. Этот файл используется шаблоном Шаблон генератора ADO.NET EntityObject и шаблоном Шаблон генератора сущностей с самостоятельным отслеживанием ADO.NET. Не следует изменять TTINCLUDE-файл. Однако вспомогательные функции, определенные в этом файле, можно использовать в пользовательских шаблонах.

Версии TTINCLUDE-файла для Visual Basic и C# устанавливаются вместе с Microsoft Visual Studio 2010 в папке <путь установки Visual Studio>\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes.

Используйте директиву Include для включения файла в другие текстовые шаблоны. При добавлении директивы Include в текстовый шаблон система объединяет открытые API-интерфейсы включенных файлов и код в текстовом шаблоне. Директива Include принимает имя файла с полным путем или только имя включенного файла. Если указать только имя, система преобразования текстовых шаблонов выполняет поиск файла по известным расположениям. Дополнительные сведения см. в разделе Как включить файлы в текстовые шаблоны. В следующем примере для атрибута задано только имя TTINCLUDE-файла.

<#@ include file="EF.Utility.CS.ttinclude"#>

Классы, заданные в TTINCLUDE-файле

Вспомогательные функции включаются в функциональные блоки в текстовых шаблонах. Функциональные блоки классов заключаются в теги <#+ и #>. Код в этом TTINCLUDE-файле использует типы платформы .NET Framework. Поэтому соответствующие сборки и пространства имен .NET Framework включаются в начало файла. Дополнительные сведения о работе с текстовыми шаблонами см. в разделе Создание артефактов.

Ниже приводится список некоторых открытых классов, определенных в TTINCLUDE-файле EF.Utility.CS и краткие примеры того, как классы используются в шаблонах Генератора ADO.NET EntityObject и Генератора сущностей с самостоятельным отслеживанием ADO.NET.

CodeGenerationTools — отвечает за помощь в создании исходного кода с правильными форматированием и функционалом.

Учитывая, что имя entiy является Course, следующий код использует объект code типа CodeGenerationTools для создания вывода public partial class Course: IObjectWithChangeTracker, INotifyPropertyChanged в целевой файл исходного кода.

<#=Accessibility.ForType(entity)#>
     <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class
     <#=code.Escape(entity)#><#=code.StringBefore(" : ", 
    code.Escape(entity.BaseType))#><#=entity.BaseType == null ? "  : " : 
    ", "#>IObjectWithChangeTracker, INotifyPropertyChanged  

MetadataTools — содержит вспомогательные методы, которые получают доступ к метаданным платформы Entity Framework, необходимым для создания кода.

<#MetadataTools ef = new MetadataTools(this);
if (ef.IsKey(edmProperty))
    
#>

MetadataLoader — отвечает за загрузку методов EdmItemCollection, StoreItemCollection и StorageMappingItemCollection из EDMX-файла или CSDL-файла. В следующем примере показана инициализация объекта MetadataLoader и загрузка метаданных в объект metadataWorkspace.

<#MetadataLoader loader = new MetadataLoader(this);
string inputFile = @"SchoolModel.edmx";
MetadataWorkspace metadataWorkspace = null;
bool allMetadataLoaded =loader.TryLoadAllMetadata(inputFile, out metadataWorkspace);
#>

Accessibility — статический класс, который заключает извлечение и преобразование примечаний создания кода в метаданных платформы Entity Framework в формат, который может быть полезен в создании кода. См. пример, включенный в описание класса CodeGenerationTools.

CodeRegion — отвечает за создание областей исходного кода. В следующем примере код CodeRegion используется для создания вывода #region Primitive Properties в целевой файл исходного кода.

<#CodeRegion region = new CodeRegion(this, 1);
...  region.Begin("Primitive Properties");
#>  

Область не будет создана, если для области не создан исходный код.

EntityFrameworkTemplateFileManager — отвечает за создание различных разделов создаваемого кода в разделенных файлах. Шаблоны, которые осуществляют запись в несколько файлов, используют этот класс, поскольку технология текстового шаблона не поддерживает создание нескольких файлов. Если текстовый шаблон является частью проекта Visual Studio, создаваемые исходные файлы добавляются в качестве зависимых от файла шаблона. В следующем примере объект EntityFrameworkTemplateFileManager добавляет определения типа сущности в отдельные файлы.

<#EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>
.  .  .  <#
// Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(namespaceName, code);
    WriteEntityTypeSerializationInfo(entity, ItemCollection, code, ef);
#>  

FunctionImportParameter — отвечает за сведение вместе параметров метода и параметров, которые необходимо отправить методу ExecuteFunction. В следующем примере метод перебирает в цикле коллекцию импортированных функций, определенных в концептуальной модели, и собирает необходимые параметры для каждой функции.

<#
foreach (EdmFunction edmFunction in container.FunctionImports)
{
    IEnumerable<FunctionImportParameter> parameters = 
        FunctionImportParameter.Create(edmFunction.Parameters, code, ef);
.  .  .  }
#>  

См. также

Основные понятия

Шаблон генератора ADO.NET EntityObject
Шаблон генератора сущностей с самостоятельным отслеживанием ADO.NET