Поставщик EntityClient для платформы Entity Framework

Поставщик EntityClient — это поставщик данных, используемый приложениями платформы Entity Framework для доступа к данным, описанным в Entity Data Model (EDM). Сведения о моделях EDM см. в разделе Моделирование данных на платформе Entity Framework. В EntityClient для доступа к источнику данных используются другие поставщики данных .NET Framework. Например, в EntityClient используется поставщик данных .NET Framework для SQL Server (SqlClient) при доступе к базе данных SQL Server. Сведения о поставщике SqlClient см. в разделе Поставщик данных .NET Framework для SQL Server (SqlClient) на платформе Entity Framework. Поставщик EntityClient реализован в пространстве имен System.Data.EntityClient.

Управление соединениями

Инфраструктура Entity Framework построена на основе отдельных поставщиков данных ADO.NET путем передачи объекта EntityConnection базовому поставщику данных и реляционной базе данных. Конструирование объекта EntityConnection производится по ссылке на набор метаданных, содержащий необходимые модели и сопоставления, а также имя поставщика данных и строку соединения. После создания объекта EntityConnection к сущностям можно обращаться через классы, созданные на основе концептуальной модели.

Строку соединения можно задать в файле app.config.

Пространство имен System.Data.EntityClient включает также класс EntityConnectionStringBuilder. Этот класс позволяет разработчикам программным способом создавать синтаксически правильные строки соединения, а также выполнять синтаксический анализ существующих строк соединения и перестраивать их с помощью свойств и методов этого класса. Дополнительные сведения см. в разделе Как построить строку соединения EntityConnection (платформа Entity Framework).

Создание запросов

Язык Entity SQL представляет собой диалект SQL, который не зависит от хранилища, работает непосредственно с концептуальными схемами сущности и поддерживает такие функции модели EDM, как наследование и связи. Класс EntityCommand используется для выполнения команд языка Entity SQL для модели сущностей. При конструировании объектов EntityCommand можно указать имя хранимой процедуры или текст запроса. Платформа Entity Framework работает с конкретными поставщиками данных, переводя общие конструкции языка Entity SQL в запросы, специфичные для конкретного типа хранилища. Дополнительные сведения о создании запросов на языке Entity SQL см. в разделе Язык Entity SQL.

В следующем примере создается объект EntityCommand, а текст запроса Entity SQL присваивается свойству System.Data.EntityClient.EntityCommand.CommandText. Запрос выбирает из концептуальной модели продукты, заказанные по прейскурантной цене. Следующий код не предполагает совершенно никаких знаний о модели хранения.

EntityCommand cmd = conn.CreateCommand();

cmd.CommandText = @"``SELECT VALUE p

FROM AdventureWorksEntities.Product AS p

ORDER BY p.ListPrice ";

Выполнение запросов

Во время выполнения запрос анализируется и преобразуется в каноническое дерево команд. Вся последующая обработка выполняется над деревом команд. Дерево команд является средством взаимодействия между объектом System.Data.EntityClient и базовым поставщиком данных .NET Framework, например System.Data.SqlClient.

Объект EntityDataReader предоставляет доступ к результатам выполнения команды EntityCommand для модели EDM. Чтобы выполнить команду, возвращающую значение EntityDataReader, необходимо вызвать метод ExecuteReader. Класс EntityDataReader реализует интерфейс IExtendedDataRecord для описания детально структурированных результатов. Дополнительные сведения см. в разделе How to: Execute an Entity SQL Query Using EntityCommand(Entity Framework).

Управление транзакциями

Платформа Entity Framework предлагает два способа использования транзакций: автоматический и явный. В автоматических транзакциях используется пространство имен System.Transactions, а в явных транзакциях — класс EntityTransaction.

Нельзя применять синтаксис EntityCommand для обновления данных, доступ к которым предоставляется с помощью модели EDM; необходимо использовать службы объектов. Сведения об обновлении данных при помощи служб объектов см. в разделе Как управлять транзакциями служб объектов (платформа Entity Framework).

См. также

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

Управление соединениями и транзакциями (задачи Entity Framework)
ADO.NET Entity Framework, платформа
Задачи Entity Framework
Справочник по функциям (платформа Entity Framework)
Службы объектов (платформа Entity Framework)