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


Вопросы переноса (платформа Entity Framework)

Платформа ADO.NET Entity Framework предоставляет существующим приложениям ряд преимуществ. Наиболее важным из них является возможность использования модели Entity Data Model (EDM) для отделения структур данных, используемых приложением, от схемы в источнике данных. Это позволяет в дальнейшем значительно упростить внесение изменений в модель хранения или сам источник данных, устранив необходимость внесения соответствующих изменений в приложение. Дополнительные сведения о преимуществах использования Entity Framework см. в разделе Знакомство с платформой Entity Framework.

Чтобы воспользоваться преимуществами, которые дает Entity Framework, необходимо перенести существующее приложение на Entity Framework. Некоторые задачи являются общими для всех перенесенных приложений. В их число входит обновление приложения для использования .NET Framework версии 3.5 с пакетом обновления 1 (SP1), определение модели EDM и настройка платформы Entity Framework. При переносе приложения на Entity Framework необходимо рассмотреть ряд дополнительных вопросов. Каких именно — зависит от типа переносимого приложения и реализуемых им функциональных возможностей. Этот раздел содержит сведения, которые помогут подобрать наилучший подход при обновлении существующих приложений.

Общие рекомендации по переносу

Следующие соображения относятся к переносу на Entity Framework любых приложений.

  • Любое приложение, использующее .NET Framework 3.5, может быть перенесено на платформу Entity Framework, если эту платформу поддерживает поставщик источника данных, используемого приложением.

  • Платформа Entity Framework может поддерживать не все функции поставщика источника данных, даже если поставщик поддерживает платформу Entity Framework.

  • Большие и сложные приложения не обязательно переносить на платформу Entity Framework сразу и полностью. При этом, однако, те части приложения, которые не используют Entity Framework, будут по-прежнему требовать изменения при изменении источника данных.

  • Соединение с поставщиком данных, используемое платформой Entity Framework, может быть общим для нескольких частей приложения, поскольку на платформе Entity Framework для доступа к источнику данных служат поставщики данных ADO.NET. Например, поставщик SqlClient используется платформой Entity Framework для доступа к базе данных SQL Server. Дополнительные сведения см. в разделе Поставщик EntityClient для платформы Entity Framework.

Типичные задачи переноса

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

NoteПримечание.

Все эти задачи при использовании средств модели EDM в среде Visual Studio 2008 выполняются автоматически. Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

  1. Обновление приложения.

    Проект, созданный в предыдущей версии среды Visual Studio и платформы .NET Framework, необходимо обновить для использования среды Visual Studio 2008 с пакетом обновления 1 (SP1) и платформы .NET Framework 3.5 с пакетом обновления 1 (SP1). Дополнительные сведения см. в разделе Visual Studio Conversion Wizard.

  2. Определение модели Entity Data Model (EDM).

    Модель EDM определяет сущности концептуальной модели, структуры в источнике данных (таблицы, хранимые процедуры, представления и т.д.), а также сопоставление между сущностями и структурами источника данных. Дополнительные сведения см. в разделе Как определить модель EDM вручную (платформа Entity Framework).

    Типы, определенные в модели хранения, должны соответствовать именам объектов в источнике данных. Если существующее приложение предоставляет доступ к данным в виде объектов, необходимо убедиться в том, что сущности и свойства, определенные в концептуальной модели, соответствуют именам существующих классов и свойств данных. Дополнительные сведения см. в разделе Как настроить модель EDM для работы с пользовательскими объектами (платформа Entity Framework).

    NoteПримечание.

    Конструктор моделей EDM позволяет переименовывать сущности концептуальной модели для обеспечения соответствия существующим объектам. Дополнительные сведения см. в разделе Общие сведения о конструкторе моделей EDM ADO.NET.

  3. Определение строки соединения.

    На платформе Entity Framework для выполнения запросов к модели EDM используется специальный формат строки соединения. В нее инкапсулированы сведения о файлах сопоставления модели EDM и соединении с источником данных. Дополнительные сведения см. в разделе Как определить строку соединения (платформа Entity Framework).

  4. Настройка проекта Visual Studio.

    Ссылки на сборки платформы Entity Framework и модель EDM должны быть добавлены в проект Visual Studio. Можно также добавить в проект файлы сопоставления, чтобы выполнялось их развертывание в каталоге, указанном в строке соединения. Дополнительные сведения см. в разделе Как вручную настроить проект Entity Framework.

Приложения с существующими объектами

При переносе приложения на платформу Entity Framework способ переноса существующих классов данных зависит от бизнес-логики и реализации в этих классах пользовательских методов и проверки свойств. Для работы с существующими классами данных должен быть выбран один из следующих подходов.

  • Если классы данных применяются только для получения и присваивания свойств, их можно заменить типами сущностей, созданными средствами модели Entity Data Model. Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).

  • Если классы данных реализуют пользовательский код проверки или другую бизнес-логику, то указанную бизнес-логику необходимо перенести в разделяемые классы, созданные средствами модели Entity Data Model. Средства модели Entity Data Model создают типы сущностей в виде разделяемых классов. Это дает возможность повторно использовать методы и свойства, преобразовав существующие классы в разделяемые. При этом в существующем приложении необходимо удалить все свойства, повторяющиеся в созданном классе. Дополнительные сведения о создании разделяемых классов см. в разделе Настройка объектов (платформа Entity Framework).

    Для каждого свойства класса данных средства платформы Entity Framework создают разделяемые методы с именами OnPropertyNameChanging и OnPropertyNameChanged. Затем в эти разделяемые методы можно перенести существующий код проверки свойства. Дополнительные сведения см. в разделе Как выполнить бизнес-логику при изменении свойств (платформа Entity Framework).

  • Если в существующих классах данных содержится значительный объем пользовательского кода или требуется сохранить существующие классы данных по каким-либо другим причинам, то необходимо выполнить одно из следующих действий.

    • Измените классы данных, чтобы они были унаследованы от класса EntityObject или ComplexObject. Все создаваемые типы EDM наследуются от класса EntityObject или ComplexObject, а платформа Entity Framework позволяет применять унаследованные от этих типов пользовательские классы данных. В этом состоит рекомендуемый способ применения пользовательских классов данных с моделью EDM. Дополнительные сведения см. в разделе Настройка объектов (платформа Entity Framework).

    • Измените классы данных, реализовав в них набор интерфейсов. Это следует сделать в том случае, если классы данных нельзя унаследовать от класса EntityObject или ComplexObject. Дополнительные сведения о реализации этих интерфейсов см. в разделе Настройка объектов (платформа Entity Framework).

NoteПримечание.

При использовании с моделью EDM существующих классов данных или разделяемых классов их имена должны совпадать с именами сущностей, определенных в концептуальной модели. Переименовать сущности можно при помощи конструктора сущностей. Дополнительные сведения см. в разделе Как создавать и изменять типы сущностей.

Приложения, использующие поставщики ADO.NET

Поставщики ADO.NET, например, SqlClient, позволяют выполнять запросы к источнику данных, возвращающие табличные данные. Кроме того, данные могут быть загружены в объект DataSet ADO.NET. В следующем списке приведены соображения по обновлению приложений, пользующихся существующими поставщиками ADO.NET.

  • Отображение табличных данных с помощью модуля чтения данных.
    Можно попробовать выполнить запрос Entity SQL при помощи поставщика EntityClient и выполнить перечисление по возвращенному объекту EntityDataReader. Этим способом следует пользоваться только в том случае, если приложение отображает табличные данные с помощью модуля чтения данных и не нуждается в предоставляемых службами объектов возможностях по материализации данных в объекты, отслеживанию изменений и выполнению обновлений. Можно продолжать пользоваться существующим кодом доступа к данным, который выполняет обновления источника данных, но пользоваться для этого соединением, доступным через свойство StoreConnection объекта EntityConnection. Дополнительные сведения см. в разделе Поставщик EntityClient для платформы Entity Framework.
  • Работа с DataSet.
    На платформе Entity Framework службы объектов обеспечивают во многом те же функциональные возможности, что и DataSet, включая сохраняемость в памяти, отслеживание изменений, привязку данных и сериализацию объектов в виде XML-данных. Дополнительные сведения см. в разделе Общие сведения о службах объектов (платформа Entity Framework).

    Если службы объектов не обеспечивают функциональные возможности DataSet, необходимые приложению, можно воспользоваться преимуществами запросов LINQ через использование LINQ to DataSet. Дополнительные сведения см. в разделе LINQ to DataSet.

Приложения с привязкой данных к элементам управления

Платформа .NET Framework позволяет инкапсулировать данные в источнике данных, таком как DataSet или элемент управления источником данных ASP.NET, а затем привязывать элементы пользовательского интерфейса к этим элементам управления данными. В следующем списке приведены соображения, касающиеся привязки элементов управления к данным платформы Entity Framework.

  • Привязка данных к элементам управления.
    При запросе модели EDM службы объектов возвращают данные в виде объектов, которые являются экземплярами типов сущностей. Эти объекты могут быть привязаны непосредственно к элементам управления, причем такая привязка поддерживает обновление данных. Это означает, что любое изменение данных в элементе управления (например, изменение строки в DataGridView) будет автоматически сохранено в базе данных при вызове метода SaveChanges.

    Если в приложении применяется перечисление результатов запроса для отображения данных в DataGridView или любом другом элементе управления, поддерживающем привязку к данным, то можно модифицировать это приложение для привязки элемента управления к результату ObjectQuery.

    Дополнительные сведения см. в разделе Привязка объектов к элементам управления (платформа Entity Framework).

  • Элементы управления источником данных ASP.NET.
    Платформа Entity Framework включает элемент управления источником данных, предназначенный для упрощения привязки данных в веб-приложениях ASP.NET. Дополнительные сведения см. в разделе Элемент управления источником данных Entity Framework.

Другие вопросы

Далее приведены вопросы, которые могут потребовать рассмотрения при переносе на платформу Entity Framework некоторых типов приложений.

  • Приложения, реализующие службы данных.
    Веб-службы и приложения, созданные на основе технологии WCF, предоставляют доступ к данным из базового источника данных с использованием формата обмена сообщениями «запрос-ответ» XML. Платформа Entity Framework поддерживает сериализацию объектов сущностей с использованием двоичной сериализации, сериализации XML или контрактной сериализации данных WCF. Двоичная сериализация и сериализация WCF поддерживают полную сериализацию графов объектов. Дополнительные сведения см. в разделе Веб-службы и модель EDM (сценарии приложений).
  • Приложения, использующие XML-данные.
    Сериализация объектов позволяет создать службы данных на платформе Entity Framework. Такие службы поставляют данные приложениям, принимающим XML-данные, например, веб-приложениям на основе технологии AJAX. В таких случаях рассмотрите возможность использования служб данных ADO.NET. Эти службы данных основаны на модели EDM и обеспечивают динамический доступ к данным сущностей через стандартные операции REST протокола HTTP, такие как GET, PUT и POST. Дополнительные сведения см. в разделе Платформа служб данных ADO.NET.

    Платформа Entity Framework не поддерживает собственный тип данных XML. Это означает, что если сущность сопоставлена с таблицей, имеющей XML-столбец, то эквивалентное свойство сущности для столбца XML является строковым. Объекты могут быть отсоединены и сериализованы в виде XML. Дополнительные сведения см. в разделе Сериализация объектов (платформа Entity Framework).

    Если в приложении необходимо предусмотреть возможность запрашивать XML-данных, то можно воспользоваться преимуществами запросов LINQ на основе применения LINQ to XML. Дополнительные сведения см. в разделе LINQ to XML.

  • Приложения, сохраняющие состояние.
    Часто веб-приложению ASP.NET необходимо сохранение состояния веб-страницы или сеанса пользователя. Объекты экземпляра ObjectContext могут быть сохранены в состоянии просмотра на клиенте или в состоянии сеанса на сервере, а затем получены и заново присоединены к новому контексту объекта. Дополнительные сведения см. в разделе Присоединение объектов (платформа Entity Framework).

См. также

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

Требования к развертыванию (Entity Framework)
Терминология платформы Entity Framework

Другие ресурсы

Задачи Entity Framework