Поставщик EntityClient для Entity Framework
Поставщик EntityClient - это поставщик данных, используемый приложениями платформы Entity Framework для доступа к данным, описанным в концептуальной модели. Сведения о концептуальных моделях см. в разделе "Моделирование и сопоставление". В EntityClient для доступа к источнику данных используются другие поставщики данных .NET Framework. Например, в EntityClient используется поставщик данных .NET Framework для SQL Server (SqlClient) при доступе к базе данных SQL Server. Сведения о поставщике SqlClient см. в разделе SqlClient для Entity Framework. Поставщик EntityClient реализован в пространстве имен System.Data.EntityClient.
Управление подключениями
Entity Framework строится на основе поставщиков данных, относящихся к хранилищу, ADO.NET, предоставляя EntityConnection базовый поставщик данных и реляционную базу данных. Чтобы создать EntityConnection объект, необходимо ссылаться на набор метаданных, содержащих необходимые модели и сопоставление, а также имя поставщика данных для хранения и строка подключения. EntityConnection После того как сущности будут доступны через классы, созданные из концептуальной модели.
Строку соединения можно задать в файле app.config.
Пространство имен System.Data.EntityClient включает также класс EntityConnectionStringBuilder. Этот класс позволяет разработчикам программным способом создавать синтаксически правильные строки соединения, а также выполнять синтаксический анализ существующих строк соединения и перестраивать их с помощью свойств и методов этого класса.
Создание запросов
Язык Entity SQL — это независимый от хранилища диалект SQL, который работает непосредственно с концептуальными схемами сущностей и поддерживает такие понятия, как наследование и связи. Класс EntityCommand используется для выполнения команды Entity SQL в модели сущностей. При конструировании объектов EntityCommand можно указать имя хранимой процедуры или текст запроса. Entity Framework работает с поставщиками данных, зависящими от хранилища, для перевода универсальных запросов Entity SQL в запросы, относящиеся к хранилищу. Дополнительные сведения о написании запросов Entity SQL см . на языке Entity SQL.
В следующем примере создается EntityCommand объект и назначается текст запроса Entity SQL свойству 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".
В этом разделе
Практическое руководство. Выполнение запроса, возвращающего результаты PrimitiveType
Практическое руководство. Выполнение запроса, возвращающего результаты StructuralType
Практическое руководство. Выполнение запроса, возвращающего результаты RefType
Практическое руководство. Выполнение запроса, возвращающего сложные типы
Практическое руководство. Выполнение запроса, возвращающего вложенные коллекции
Практическое руководство. Выполнение полиморфного запроса
Практическое руководство. Переход по отношениям с помощью оператора Navigate