Вопросы миграции (Entity Framework)Migration Considerations (Entity Framework)

ADO.NET Entity Framework предоставляет ряд преимуществ в существующее приложение.The ADO.NET Entity Framework provides several benefits to an existing application. Наиболее важным из них является возможность использования концептуальной модели для отделения структур данных, используемых приложением, от схемы в источнике данных.One of the most important of these benefits is the ability to use a conceptual model to separate data structures used by the application from the schema in the data source. Это позволяет в дальнейшем значительно упростить внесение изменений в модель хранения или сам источник данных, устранив необходимость внесения соответствующих изменений в приложение.This enables you to easily make future changes to the storage model or to the data source itself without making compensating changes to the application. Дополнительные сведения о преимуществах использования Entity FrameworkEntity Framework, см. в разделе Обзор Entity Framework и модели EDM.For more information about the benefits of using the Entity FrameworkEntity Framework, see Entity Framework Overview and Entity Data Model.

Чтобы воспользоваться преимуществами Entity FrameworkEntity Framework, можно перенести существующее приложение для Entity FrameworkEntity Framework.To take advantage of the benefits of the Entity FrameworkEntity Framework, you can migrate an existing application to the Entity FrameworkEntity Framework. Некоторые задачи являются общими для всех перенесенных приложений.Some tasks are common to all migrated applications. Их число входит обновление приложения для использования в .NET Framework, начиная с версии 3.5 с пакетом обновления 1 (SP1), определение модели и сопоставления и настройка платформы Entity Framework.These common tasks include upgrading the application to use the .NET Framework starting with version 3.5 Service Pack 1 (SP1), defining models and mapping, and configuring the Entity Framework. При переносе приложения на Entity FrameworkEntity Framework необходимо рассмотреть ряд дополнительных вопросов.When you migrate an application to the Entity FrameworkEntity Framework, there are additional considerations that apply. Каких именно - зависит от типа переносимого приложения и реализуемых им функциональных возможностей.These considerations depend on the type of application being migrated and on the specific functionality of the application. Этот раздел содержит сведения, которые помогут подобрать наилучший подход при обновлении существующих приложений.This topic provides information to help you choose the best approach to use when you upgrade an existing application.

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

Следующие соображения относятся к переносу на Entity FrameworkEntity Framework любых приложений.The following considerations apply when you migrate any application to the Entity FrameworkEntity Framework:

  • Любое приложение, использующее .NET Framework, начиная с версии 3.5 с пакетом обновления 1 можно перенести на платформу Entity Framework, до тех пор, пока платформу поддерживает поставщик данных для источника данных, используемых приложением.Any application that uses the .NET Framework starting with version 3.5 SP1 can be migrated to the Entity Framework, as long as the data provider for the data source that is used by the application supports the Entity Framework.

  • Платформа Entity Framework может поддерживать не все функции поставщика источника данных, даже если поставщик поддерживает платформу Entity Framework.The Entity Framework may not support all the functionality of a data source provider, even if that provider supports the Entity Framework.

  • Большие и сложные приложения не обязательно переносить на платформу Entity Framework сразу и полностью.For a large or complex application, you are not required to migrate the whole application to the Entity Framework at one time. При этом, однако, те части приложения, которые не используют Entity Framework, будут по-прежнему требовать изменения при изменении источника данных.However, any part of the application that does not use the Entity Framework must still be changed when the data source changes.

  • Соединение с поставщиком данных используется платформой Entity Framework можно использовать совместно с другими частями приложения, так как Entity FrameworkEntity Framework использует поставщики данных ADO.NET для доступа к источнику данных.The data provider connection used by the Entity Framework can be shared with other parts of your application because the Entity FrameworkEntity Framework uses ADO.NET data providers to access the data source. Например, поставщик SqlClient используется платформой Entity Framework для доступа к базе данных SQL Server.For example, the SqlClient provider is used by the Entity Framework to access a SQL Server database. Дополнительные сведения см. в разделе поставщик EntityClient для Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

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

Путь переноса существующего приложения на платформу Entity FrameworkEntity Framework зависит как от типа приложения, так и от существующей стратегии доступа к данным.The path to migrate an existing application to the Entity FrameworkEntity Framework depends both on the type of application and on the existing data access strategy. Но при переносе любого существующего приложения на платформу Entity FrameworkEntity Framework всегда приходится выполнять следующие задачи.However, you must always perform the following tasks when you migrate an existing application to the Entity FrameworkEntity Framework.

Примечание

Все эти задачи выполняются автоматически при использовании средств модели EDM, начиная с версии Visual Studio 2008.All of these tasks are performed automatically when you use the Entity Data Model tools starting with Visual Studio 2008. Дополнительные сведения см. в разделе Практическое руководство. Использовать мастер моделей EDM.For more information, see How to: Use the Entity Data Model Wizard.

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

    Необходимо обновить проект, созданный с помощью более ранней версии Visual Studio и .NET Framework для использования с пакетом обновления 1 для Visual Studio 2008 и .NET Framework, начиная с версии 3.5 с пакетом обновления 1.A project created by using an earlier version of Visual Studio and the .NET Framework must be upgraded to use Visual Studio 2008 SP1 and the .NET Framework starting with version 3.5 SP1.

  2. Определение моделей и сопоставлений.Define the models and mapping.

    Файлы модели и сопоставления определяют сущности в концептуальной модели, структуры в источнике данных (таблицы, хранимые процедуры, представления и т. д.), а также сопоставление между сущностями и структурами источника данных.The model and mapping files define entities in the conceptual model; structures in the data source, such as tables, stored procedures, and views; and the mapping between the entities and data source structures. Дополнительные сведения см. в разделе Практическое руководство. Вручную определите модель и файлы сопоставления.For more information, see How to: Manually Define the Model and Mapping Files.

    Типы, определенные в модели хранения, должны соответствовать именам объектов в источнике данных.Types that are defined in the storage model must match the name of objects in the data source. Если существующее приложение предоставляет доступ к данным в виде объектов, необходимо убедиться в том, что сущности и свойства, определенные в концептуальной модели, соответствуют именам существующих классов и свойств данных.If the existing application exposes data as objects, you must ensure that the entities and properties that are defined in the conceptual model match the names of these existing data classes and properties. Дополнительные сведения см. в разделе Практическое руководство. Настройка файлов моделирования и сопоставления для работы с настраиваемыми объектами.For more information, see How to: Customize Modeling and Mapping Files to Work with Custom Objects.

    Примечание

    Конструктор моделей EDM позволяет переименовывать сущности концептуальной модели для обеспечения соответствия существующим объектам.The Entity Data Model Designer can be used to rename entities in the conceptual model to match existing objects. Дополнительные сведения см. в разделе конструктора моделей EDM.For more information, see Entity Data Model Designer.

  3. Определение строки соединения.Define the connection string.

    В платформе Entity FrameworkEntity Framework для выполнения запросов к концептуальной модели используется специальный формат строки соединения.The Entity FrameworkEntity Framework uses a specially formatted connection string when executing queries against a conceptual model. В нее инкапсулированы сведения о файлах модели и сопоставления, а также о соединении с источником данных.This connection string encapsulates information about the model and mapping files and the connection to the data source. Дополнительные сведения см. в разделе Практическое руководство. Определение строки подключения.For more information, see How to: Define the Connection String.

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

    Ссылки на Entity FrameworkEntity Framework файлы сборок и модели и сопоставления, которые необходимо добавить в проект Visual Studio.References to Entity FrameworkEntity Framework assemblies and the model and mapping files must be added to the Visual Studio project. Можно также добавить в проект файлы сопоставления, чтобы выполнялось их развертывание в каталоге, указанном в строке соединения.You can add these mapping files to the project to ensure that they are deployed with the application in the location that is indicated in the connection string. Дополнительные сведения см. в разделе Практическое руководство. Вручную настроить проект Entity Framework.For more information, see How to: Manually Configure an Entity Framework Project.

Приложения с существующими объектамиConsiderations for Applications with Existing Objects

Начиная с .NET Framework 4, Entity FrameworkEntity Framework поддерживает «plain old» объекты среды CLR (POCO), также называется игнорирующих сохраняемость объектов.Starting with the .NET Framework 4, the Entity FrameworkEntity Framework supports "plain old" CLR objects (POCO), also called persistence-ignorant objects. В большинстве случаев существующие объекты могут работать с Entity FrameworkEntity Framework при внесении незначительных изменений.In most cases, your existing objects can work with the Entity FrameworkEntity Framework by making minor changes. Дополнительные сведения см. в разделе работа с сущностями POCO.For more information, see Working with POCO Entities. Можно также перенести приложение Entity FrameworkEntity Framework и использовать классы данных, сформированные средствами платформы Entity Framework.You can also migrate an application to the Entity FrameworkEntity Framework and use the data classes that are generated by the Entity Framework tools. Дополнительные сведения см. в разделе Практическое руководство. Использовать мастер моделей EDM.For more information, see How to: Use the Entity Data Model Wizard.

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

Поставщики ADO.NET, например, SqlClient, позволяют выполнять запросы к источнику данных, возвращающие табличные данные.ADO.NET providers, such as SqlClient, enable you to query a data source to return tabular data. Данные также могут быть загружены в набор данных ADO.NET.Data can also be loaded into an ADO.NET DataSet. Ниже перечислены вопросы обновления приложения, использующего существующего поставщика ADO.NET.The following list describes considerations for upgrading an application that uses an existing ADO.NET provider:

  • Отображение табличных данных с помощью модуля чтения данных.Displaying tabular data by using a data reader.

    Можно попробовать выполнить Entity SQLEntity SQL запросов с помощью поставщика EntityClient и перечисление по возвращенному EntityDataReader объекта.You may consider executing an Entity SQLEntity SQL query using the EntityClient provider and enumerating through the returned EntityDataReader object. Этим способом следует пользоваться только в том случае, если приложение отображает табличные данные с помощью модуля чтения данных и не нуждается в предоставляемых Entity FrameworkEntity Framework возможностях по материализации данных в объекты, отслеживанию изменений и выполнению обновлений.Do this only if your application displays tabular data using a data reader and does not require the facilities provided by the Entity FrameworkEntity Framework for materializing data into objects, tracking changes, and making updates. Можно продолжать пользоваться существующим кодом доступа к данным, который выполняет обновления источника данных, но пользоваться для этого соединением, доступным через свойство StoreConnection объекта EntityConnection.You can continue to use existing data access code that makes updates to the data source, but you can use the existing connection accessed from the StoreConnection property of EntityConnection. Дополнительные сведения см. в разделе поставщик EntityClient для Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

  • Работа с DataSet.Working with DataSets.

    Entity FrameworkEntity Framework Предоставляет многие из те же функциональные возможности DataSet, включая сохраняемость в памяти, отслеживание изменений, привязку данных и сериализацию объектов в виде XML-данных.The Entity FrameworkEntity Framework provides many of the same functionalities provided by DataSet, including in-memory persistence, change tracking, data binding, and serializing objects as XML data. Дополнительные сведения см. в разделе работа с объектами.For more information, see Working with Objects.

    Если Entity FrameworkEntity Framework не предоставляет функциональные возможности DataSet, необходимые для приложения, вы все равно можете воспользоваться преимуществами запросов LINQ с помощью LINQ to DataSetLINQ to DataSet.If the Entity FrameworkEntity Framework does not provide the functionality of DataSet needed by your application, you can still take advantage of the benefits of LINQ queries by using LINQ to DataSetLINQ to DataSet. Дополнительные сведения см. в разделе LINQ to DataSet.For more information, see LINQ to DataSet.

Приложения с привязкой данных к элементам управленияConsiderations for Applications that Bind Data to Controls

.NET Framework позволяет инкапсулировать данные в источнике данных, таких как набор данных или элемент управления источником данных ASP.NET, а затем привязать элементы пользовательского интерфейса к этим элементам управления данными.The .NET Framework lets you encapsulate data in a data source, such as a DataSet or an ASP.NET data source control, and then bind user interface elements to those data controls. В следующем списке приведены соображения, касающиеся привязки элементов управления к данным платформы Entity Framework.The following list describes considerations for binding controls to Entity Framework data.

  • Привязка данных к элементам управления.Binding data to controls.

    При запросе концептуальной модели, Entity FrameworkEntity Framework возвращает данные в виде объектов, которые являются экземплярами типов сущностей.When you query the conceptual model, the Entity FrameworkEntity Framework returns the data as objects that are instances of entity types. Эти объекты могут быть привязаны непосредственно к элементам управления, причем такая привязка поддерживает обновления.These objects can be bound directly to controls, and this binding supports updates. Это означает, что изменения данных в элементе управления, например строки в DataGridView, автоматически сохраняются в базу данных при SaveChanges вызывается метод.This means that changes to data in a control, such as a row in a DataGridView, automatically get saved to the database when the SaveChanges method is called.

    Если в приложении применяется перечисление результатов запроса для отображения данных в DataGridView или любом другом элементе управления, поддерживающем привязку к данным, то можно модифицировать это приложение для привязки элемента управления к результату ObjectQuery<T>.If your application enumerates the results of a query to display data in a DataGridView or other type of control that supports data binding, you can modify your application to bind the control to the result of an ObjectQuery<T>.

    Дополнительные сведения см. в разделе привязка объектов к элементам управления.For more information, see Binding Objects to Controls.

  • Элементы управления источником данных ASP.NET.ASP.NET data source controls.

    Entity FrameworkEntity Framework Включает элемент управления источником данных, разработанная для упрощения привязки данных в веб-приложений ASP.NET.The Entity FrameworkEntity Framework includes a data source control designed to simplify data binding in ASP.NET Web applications. Дополнительные сведения см. в разделе Обзор элемента управления EntityDataSource веб-сервера.For more information, see EntityDataSource Web Server Control Overview.

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

Далее приведены вопросы, которые могут потребовать рассмотрения при переносе на платформу Entity Framework некоторых типов приложений.The following are considerations that may apply when you migrate specific types of applications to the Entity Framework.

  • Приложения, реализующие службы данных.Applications that expose data services.

    Веб-службы и приложения, созданные на основе технологии WCF, предоставляют доступ к данным из базового источника данных с использованием формата обмена сообщениями «запрос-ответ» XML.Web services and applications that are based on the Windows Communication Foundation (WCF) expose data from an underlying data source by using an XML request/response messaging format. Платформа Entity FrameworkEntity Framework поддерживает сериализацию объектов сущностей с использованием двоичной сериализации, сериализации XML или контрактной сериализации данных WCF.The Entity FrameworkEntity Framework supports the serialization of entity objects by using binary, XML, or WCF data contract serialization. Двоичная сериализация и сериализация WCF поддерживают полную сериализацию графов объектов.Binary and WCF serialization both support full serialization of object graphs. Дополнительные сведения см. в разделе сборка N-уровневых приложений.For more information, see Building N-Tier Applications.

  • Приложения, использующие XML-данные.Applications that use XML data.

    Сериализация объектов позволяет создать службы данных на платформе Entity FrameworkEntity Framework.Object serialization enables you to create Entity FrameworkEntity Framework data services. Такие службы поставляют данные приложениям, принимающим XML-данные, например, интернет-приложениям на основе технологии AJAX.These services provide data to applications that consume XML data, such as AJAX-based Internet applications. В этом случае попробуйте использовать Службы данных WCFWCF Data Services.In these cases, consider using Службы данных WCFWCF Data Services. Эти службы данных основаны на модели EDM и обеспечивают динамический доступ к данным сущностей через стандартные операции Representational State Transfer (REST) HTTP, такие как GET PUT и POST.These data services are based on the Entity Data Model and provide dynamic access to entity data by using standard Representational State Transfer (REST) HTTP actions, such as GET, PUT, and POST. Дополнительные сведения см. в разделе Службы данных WCF 4.5.For more information, see WCF Data Services 4.5.

    Платформа Entity FrameworkEntity Framework не поддерживает собственный тип данных XML.The Entity FrameworkEntity Framework does not support a native-XML data type. Это означает, что если сущность сопоставлена с таблицей, имеющей XML-столбец, то эквивалентное свойство сущности для столбца XML является строковым.This means that when an entity is mapped to a table with an XML column, the equivalent entity property for the XML column is a string. Объекты могут быть отсоединены и сериализованы в виде XML.Objects can be disconnected and serialized as XML. Дополнительные сведения см. в разделе сериализация объектов.For more information, see Serializing Objects.

    Если в приложении необходимо предусмотреть возможность запрашивать XML-данных, то можно воспользоваться преимуществами запросов LINQ на основе применения LINQ to XML.If your application requires the ability to query XML data, you can still take advantage of the benefits of LINQ queries by using LINQ to XML. Дополнительные сведения см. в разделе LINQ to XML (C#) или LINQ to XML (Visual Basic).For more information, see LINQ to XML (C#) or LINQ to XML (Visual Basic).

  • Приложения, сохраняющие состояние.Applications that maintain state.

    Веб-приложений ASP.NET, часто необходимо поддерживать состояние веб-страницы или сеанса пользователя.ASP.NET Web applications must frequently maintain the state of a Web page or of a user session. Объекты в ObjectContext экземпляр хранятся в состоянии просмотра на клиенте или в состоянии сеанса на сервере и позднее извлекаются и повторно присоединить к новому контексту объекта.Objects in an ObjectContext instance can be stored in the client view state or in the session state on the server, and later retrieved and reattached to a new object context. Дополнительные сведения см. в разделе присоединение и отсоединение объектов.For more information, see Attaching and Detaching Objects.

См. такжеSee also