Как предварительно создать представления для повышения производительности запросов
Прежде чем платформа Entity Framework сможет выполнять запросы к концептуальной модели или сохранять изменения в источнике данных, ей необходимо создать набор локальных представлений запросов для доступа к базе данных. Эти представления входят в состав метаданных, кэшируемых для каждого домена приложения. Если создается несколько экземпляров контекстов объекта в одном и том же домене приложения, то представления из кэшированных метаданных используются в них повторно, а не формируются заново. Создание представлений составляет значительную долю общей стоимости выполнения единичного запроса, поэтому платформа Entity Framework позволяет заранее создавать эти представления и включать их в скомпилированный проект. Дополнительные сведения см. в разделе Вопросы производительности (платформа Entity Framework).
Инструмент Генератор модели EDM (EdmGen.exe) помимо формирования и проверки файлов сопоставления и модели платформы Entity Framework позволяет предварительно создавать эти представления. В данном разделе показано, как при помощи программы EdmGen.exe заранее создать представления для модели School и добавить файл представления в проект. Создание модели School на платформе Entity Framework производилось в разделе Краткое руководство. Последняя процедура показывает, как повторно добавить файлы модели и сопоставления в веб-приложение ASP.NET в виде внедренных ресурсов.
Можно также использовать средства преобразования текстовых шаблонов для создания представлений до компиляции. Дополнительные сведения см. в разделе Использование шаблона T4 для создания представлений.
Примечание |
---|
В процедурах, описанных в этом разделе, используются события перед построением и после построения в среде Visual Studio, которые не поддерживаются на веб-узлах ASP.NET. Чтобы заранее создать представления, используемые веб-узлом ASP.NET, необходимо создать файл EDMX в отдельной библиотеке классов, выполнить процедуры в How to: Use a Model Defined in a Class Library для проекта библиотеки классов и добавить ссылку на этот проект в проект веб-узла ASP.NET. В качестве альтернативы можно попробовать вместо веб-узла ASP.NET воспользоваться проектом веб-приложения ASP.NET. Это позволить при помощи процедуры, описанной в данном разделе, включить заранее созданные представления в тот же проект, что и веб-приложение ASP.NET. |
Предварительно созданные представления во время выполнения будут проверяться на согласованность с текущей версией файлов модели и сопоставления.
В процедурах, описанных в этом разделе, используется модель School. Эту модель можно создать, выполнив рекомендации раздела Краткое руководство (платформа Entity Framework). Если в процессе построения уже созданы файлы модели и сопоставления в выходном каталоге, то первую процедуру можно пропустить.
Создание файлов модели и сопоставления для модели School в выходном каталоге
В обозревателе решений дважды щелкните файл School.edmx.
Модель School будет отображена в конструкторе сущностей.
В обозревателе моделей выберите модель SchoolModel и замените Обработка артефактов метаданных на Копировать в выходной каталог.
Это обеспечит создание в выходном каталоге файлов модели и сопоставления.
Постройте решение.
При этом файлы модели и сопоставления будут созданы в выходном каталоге.
Добавление средств создания представления в проект Visual Basic
В обозревателе решений выберите проект, для которого необходимо задать событие построения.
В меню Проект выберите пункт ** Свойства проекта.
На странице Свойства откройте вкладку Компиляция.
Нажмите кнопку События построения.
В диалоговом окне События построения добавьте следующее событие перед построением (без разрывов строк).
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb"
Нажмите кнопку ОК.
Закройте страницу Свойства проекта.
Постройте решение.
При этом будет создан файл представления School.Views.vb.
В Обозревателе решений щелкните файл проекта правой кнопкой мыши и выберите пункт Добавить существующий элемент.
В диалоговом окне Добавление существующего элемента перейдите в корневую папку проекта и выберите файл School.Views.vb.
Нажмите кнопку Добавить.
Постройте решение.
Добавление средств создания представления в проект C#
В обозревателе решений выберите проект, для которого необходимо задать событие построения.
В меню Проект выберите пункт Свойства.
Откройте вкладку События построения.
В окне Командная строка события перед построением добавьте следующее событие перед построением (без разрывов строк).
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs"
Постройте решение.
При этом будет создан файл представления School.Views.cs.
В Обозревателе решений щелкните файл проекта правой кнопкой мыши и выберите пункт Добавить существующий элемент.
Откроется диалоговое окно Добавление существующего элемента.
Перейдите в корневую папку проекта и выберите файл School.Views.cs.
Нажмите кнопку Добавить.
Постройте решение.
Повторное добавление файлов модели и сопоставления в проект ASP.NET в качестве внедренных ресурсов
В меню Проект выберите пункт Добавить существующий элемент.
Перейдите в выходной каталог проекта, выберите файл School.csdl и нажмите кнопку ОК.
В обозревателе решений выберите добавленный файл.
В окне Свойства задайте для параметра Действие сборки значение Внедренный ресурс.
Повторите шаги с 1 по 3 для файлов School.ssdl и School.msl.
В окне Обозреватель решений дважды щелкните файл App.config, а затем задайте параметр Metadata в атрибуте connectionString в одном из следующих форматов.
Metadata=
res://<assemblyFullName>/<resourceName>;
Metadata=
res://*/<resourceName>;
Metadata=res://*;
Параметр
resourceName
может включать пространство имен проекта. Дополнительные сведения см. в разделе Строки соединения (платформа Entity Framework).
См. также
Справочник
Генератор модели EDM (EdmGen.exe)
Другие ресурсы
Entity Data Model Tools
Изоляция производительности для представлений до компиляции или до создания в Entity Framework 4.