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

Поставщик EntityClient — это поставщик данных, используемый приложениями платформы Entity Framework для доступа к данным, описанным в концептуальной модели. Дополнительные сведения о концептуальных моделях см. в разделе Моделирование и сопоставление (платформа 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. Запрос Entity SQL выбирает из концептуальной модели продукты, заказанные по прейскурантной цене. Следующий код не предполагает совершенно никаких знаний о модели хранения.

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 по отношению к концептуальной модели. Для выполнения команды, возвращающей значение EntityDataReader, нужно вызвать метод ExecuteReader. Класс EntityDataReader реализует интерфейс IExtendedDataRecord для описания детально структурированных результатов.

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

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

Сведения об обновлении данных, доступ к которым предоставляется с помощью концептуальной модели, см. в разделе Как управлять транзакциями на платформе Entity Framework.

В этом разделе

Как построить строку соединения EntityConnection (платформа Entity Framework)

Как выполнить запрос, возвращающий результаты типов-примитивов (EntityClient)

Как выполнить запрос, возвращающий результаты типа StructuralType (EntityClient)

Как выполнить запрос, возвращающий результаты RefType (EntityClient)

Как выполнить запрос, возвращающий сложные типы (EntityClient)

Как выполнить запрос, который возвращает вложенные коллекции (EntityClient)

Как выполнить параметризованный запрос Entity SQL с использованием команды EntityCommand (EntityClient)

Как выполнить параметризированную хранимую процедуру при помощи команды EntityCommand (EntityClient)

Как выполнить полиморфный запрос (EntityClient)

Как переходить по связям с помощью оператора Navigate (EntityClient)

См. также

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

Управление соединениями и транзакциями (платформа Entity Framework)
Платформа ADO.NET Entity Framework

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

Справочник по языку (платформа Entity Framework)