Поставщик 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)