Вопросы миграции (Entity Framework)
Платформа Entity Framework ADO.NET предоставляет несколько преимуществ для существующего приложения. Наиболее важным из них является возможность использования концептуальной модели для отделения структур данных, используемых приложением, от схемы в источнике данных. Это позволяет в дальнейшем значительно упростить внесение изменений в модель хранения или сам источник данных, устранив необходимость внесения соответствующих изменений в приложение. Дополнительные сведения о преимуществах использования Entity Framework см. в разделе "Обзор Entity Framework" и "Модель данных сущностей".
Чтобы воспользоваться преимуществами Entity Framework, можно перенести существующее приложение в Entity Framework. Некоторые задачи являются общими для всех перенесенных приложений. К этим общим задачам относятся обновление приложения для использования платформа .NET Framework начиная с версии 3.5 с пакетом обновления 1 (SP1), определение моделей и сопоставление, а также настройка Entity Framework. При переносе приложения в Entity Framework существуют дополнительные рекомендации. Каких именно - зависит от типа переносимого приложения и реализуемых им функциональных возможностей. Этот раздел содержит сведения, которые помогут подобрать наилучший подход при обновлении существующих приложений.
Общие рекомендации по переносу
Следующие рекомендации применяются при переносе любого приложения в Entity Framework:
Любое приложение, использующее платформа .NET Framework начиная с версии 3.5 с пакетом обновления 1 (SP1), можно перенести в Entity Framework, если поставщик данных для источника данных, используемого приложением, поддерживает Entity Framework.
Платформа Entity Framework может поддерживать не все функции поставщика источника данных, даже если поставщик поддерживает платформу Entity Framework.
Большие и сложные приложения не обязательно переносить на платформу Entity Framework сразу и полностью. При этом, однако, те части приложения, которые не используют Entity Framework, будут по-прежнему требовать изменения при изменении источника данных.
Подключение поставщика данных, используемое Entity Framework, можно предоставить другим частям приложения, так как Entity Framework использует ADO.NET поставщики данных для доступа к источнику данных. Например, поставщик SqlClient используется платформой Entity Framework для доступа к базе данных SQL Server. Дополнительные сведения см. в разделе EntityClient Provider для Entity Framework.
Типичные задачи переноса
Путь к переносу существующего приложения в Entity Framework зависит как от типа приложения, так и от существующей стратегии доступа к данным. Однако при переносе существующего приложения в Entity Framework необходимо всегда выполнять следующие задачи.
Примечание.
Все эти задачи выполняются автоматически при использовании средств модели данных сущностей, начиная с Visual Studio 2008. Дополнительные сведения см. в разделе "Практическое руководство. Использование мастера модели данных сущности".
Обновление приложения.
Проект, созданный с помощью более ранней версии Visual Studio и платформа .NET Framework, необходимо обновить для использования Visual Studio 2008 с пакетом обновления 1 (SP1) и платформа .NET Framework начиная с версии 3.5 с пакетом обновления 1 (SP1).
Определение моделей и сопоставлений.
Файлы модели и сопоставления определяют сущности в концептуальной модели, структуры в источнике данных (таблицы, хранимые процедуры, представления и т. д.), а также сопоставление между сущностями и структурами источника данных. Дополнительные сведения см. в разделе "Практическое руководство. Определение файлов модели и сопоставления" вручную.
Типы, определенные в модели хранения, должны соответствовать именам объектов в источнике данных. Если существующее приложение предоставляет доступ к данным в виде объектов, необходимо убедиться в том, что сущности и свойства, определенные в концептуальной модели, соответствуют именам существующих классов и свойств данных. Дополнительные сведения см. в разделе "Практическое руководство. Настройка файлов моделирования и сопоставления для работы с пользовательскими объектами".
Примечание.
Конструктор моделей EDM позволяет переименовывать сущности концептуальной модели для обеспечения соответствия существующим объектам. Дополнительные сведения см. в конструкторе моделей данных сущностей.
Определение строки соединения.
Entity Framework использует специально отформатированные строка подключения при выполнении запросов к концептуальной модели. В нее инкапсулированы сведения о файлах модели и сопоставления, а также о соединении с источником данных.
Настройте проект Visual Studio.
Ссылки на сборки Entity Framework и файлы модели и сопоставления должны быть добавлены в проект Visual Studio. Можно также добавить в проект файлы сопоставления, чтобы выполнялось их развертывание в каталоге, указанном в строке соединения. Дополнительные сведения см. в статье "Практическое руководство. Настройка проекта Entity Framework вручную".
Приложения с существующими объектами
Начиная с платформа .NET Framework 4, Entity Framework поддерживает "обычные старые" объекты CLR (POCO), также называемые невнимателями сохраняемости. В большинстве случаев существующие объекты могут работать с Entity Framework, внося незначительные изменения. Дополнительные сведения см. в статье "Работа с сущностями POCO". Вы также можете перенести приложение в Entity Framework и использовать классы данных, созданные средствами Entity Framework. Дополнительные сведения см. в разделе "Практическое руководство. Использование мастера модели данных сущности".
Приложения, использующие поставщики ADO.NET
поставщики ADO.NET, например SqlClient, позволяют запрашивать источник данных для возврата табличных данных. Данные также можно загрузить в набор данных ADO.NET DataSet. В следующем списке описываются рекомендации по обновлению приложения, использующего существующий поставщик ADO.NET:
Отображение табличных данных с помощью модуля чтения данных.
Вы можете рассмотреть возможность выполнения запроса Entity SQL с помощью поставщика EntityClient и перечисления через возвращаемый EntityDataReader объект. Это делается только в том случае, если приложение отображает табличные данные с помощью средства чтения данных и не требует средств, предоставляемых Entity Framework для материализации данных в объекты, отслеживания изменений и внесения обновлений. Можно продолжать пользоваться существующим кодом доступа к данным, который выполняет обновления источника данных, но пользоваться для этого соединением, доступным через свойство StoreConnection объекта EntityConnection. Дополнительные сведения см. в разделе EntityClient Provider для Entity Framework.
Работа с DataSet.
Entity Framework предоставляет множество одинаковых функций, предоставляемых DataSet, включая сохраняемость в памяти, отслеживание изменений, привязку данных и сериализацию объектов в виде XML-данных. Дополнительные сведения см. в разделе "Работа с объектами".
Если Entity Framework не предоставляет функциональные возможности набора данных, необходимого для приложения, вы по-прежнему можете воспользоваться преимуществами запросов LINQ с помощью LINQ to DataSet. Дополнительные сведения см. в разделе LINQ to DataSet.
Приложения с привязкой данных к элементам управления
Платформа .NET Framework позволяет инкапсулировать данные в источнике данных, например DataSet или элемент управления источником данных ASP.NET, а затем привязать элементы пользовательского интерфейса к этим элементам управления данными. В следующем списке приведены соображения, касающиеся привязки элементов управления к данным платформы Entity Framework.
Привязка данных к элементам управления.
При запросе концептуальной модели Entity Framework возвращает данные в виде объектов, которые являются экземплярами типов сущностей. Эти объекты могут быть привязаны непосредственно к элементам управления, и эта привязка поддерживает обновления. Это означает, что изменения данных в элементе управления, например строка в строке, автоматически сохраняются в DataGridViewбазе данных при вызове SaveChanges метода.
Если в приложении применяется перечисление результатов запроса для отображения данных в DataGridView или любом другом элементе управления, поддерживающем привязку к данным, то можно модифицировать это приложение для привязки элемента управления к результату ObjectQuery<T>.
Дополнительные сведения см. в разделе "Привязка объектов к элементам управления".
ASP.NET элементы управления источниками данных.
Entity Framework включает элемент управления источниками данных, предназначенный для упрощения привязки данных в веб-приложениях ASP.NET. Дополнительные сведения см. в статье EntityDataSource Web Server Control Overview.
Другие вопросы
Далее приведены вопросы, которые могут потребовать рассмотрения при переносе на платформу Entity Framework некоторых типов приложений.
Приложения, реализующие службы данных.
Веб-службы и приложения, созданные на основе технологии WCF, предоставляют доступ к данным из базового источника данных с использованием формата обмена сообщениями «запрос-ответ» XML. Entity Framework поддерживает сериализацию объектов сущностей с помощью двоичной, XML или сериализации контракта данных WCF. Двоичная сериализация и сериализация WCF поддерживают полную сериализацию графов объектов. Дополнительные сведения см. в разделе "Создание N-уровней приложений".
Приложения, использующие XML-данные.
Сериализация объектов позволяет создавать службы данных Entity Framework. Такие службы поставляют данные приложениям, принимающим XML-данные, например, интернет-приложениям на основе технологии AJAX. В этих случаях рекомендуется использовать службы данных WCF. Эти службы данных основаны на модели данных сущности и обеспечивают динамический доступ к данным сущности с помощью стандартных действий HTTP передачи состояния представления (REST), таких как GET, PUT и POST. Дополнительные сведения см. в разделе Службы данных WCF 4.5.
Entity Framework не поддерживает тип данных native-XML. Это означает, что если сущность сопоставлена с таблицей, имеющей XML-столбец, то эквивалентное свойство сущности для столбца XML является строковым. Объекты могут быть отсоединены и сериализованы в виде XML. Дополнительные сведения см. в разделе "Сериализация объектов".
Если в приложении необходимо предусмотреть возможность запрашивать XML-данных, то можно воспользоваться преимуществами запросов LINQ на основе применения LINQ to XML. Дополнительные сведения см. в разделе LINQ to XML (C#) или LINQ to XML (Visual Basic).
Приложения, сохраняющие состояние.
ASP.NET веб-приложениям часто следует поддерживать состояние веб-страницы или сеанса пользователя. Объекты в ObjectContext экземпляре можно хранить в состоянии представления клиента или в состоянии сеанса на сервере, а затем получить и повторно подключиться к новому контексту объекта. Дополнительные сведения см. в разделе "Присоединение и отключение объектов".