Общие сведения о технологии LINQ to Entities

Большинство бизнес-приложений в настоящее время проектируются для доступа к данным в реляционных базах данных. В какой-то момент времени этим приложениям придется взаимодействовать с данными, представленными в реляционной форме. Реляционная модель оптимизирована для эффективного хранения и получения данных, но не для концептуального моделирования, используемого в объектно ориентированном программировании. Несколько нормализованных таблиц часто соответствуют единственному классу, и связи между классами представлены иначе, чем связи между таблицами. Разработчикам бизнес-приложения часто приходится использовать два (или более) языков программирования: язык высокого уровня для бизнес-логики и уровней представления (такой как Visual C# или Visual Basic) и язык запросов для взаимодействия с базой данных (такой как Transact-SQL). Для эффективной работы разработчик должен хорошо владеть несколькими языками, кроме того, возникают несоответствия между языками в среде разработки. Например, приложение, которое использует API для доступа к данным, чтобы выполнить запрос к базе данных, указывает запрос как строковый литерал с использованием кавычек. Эта строка запроса непрозрачна для компилятора и не проверяется на наличие ошибок, таких как недопустимый синтаксис и существование строк и столбцов. Не выполняется проверка типов параметров запросов и не поддерживается технология IntelliSense.

Платформа Entity Framework позволяет работать с данными в форме специфических для домена объектов и свойств (например, клиентами и их адресами) без необходимости обращаться к базовым таблицам и столбцам базы данных, где хранятся эти данные. Дополнительные сведения см. в разделе Модель EDM. С помощью технологии LINQ разработчики могут формулировать запросы на основе наборов в коде приложений, не используя отдельный язык запросов. Через инфраструктуру служб объектов платформы Entity Framework ADO.NET обеспечивает общее концептуальное представление данных, в том числе реляционных данных, как объектов среды .NET. Поэтому уровень объектов — идеальная цель для поддержки LINQ. Эта технология LINQ, LINQ to Entities, позволяет разработчикам создавать гибкие, строго типизированные запросы к контексту объекта Entity Framework с помощью выражений LINQ и стандартных операторов запросов LINQ непосредственно из среды разработки. Запросы выражены в самом языке программирования, а не как строковые литералы, внедренные в код приложения, что обычно применяется в приложениях, построенных на платформе Microsoft .NET Framework версии 2.0. Синтаксические ошибки, а также ошибки в именах элементов и типах данных будут обнаружены компилятором и объявлены на стадии компиляции, что уменьшает возможность рассогласования типов между Entity Data Model и приложением.

Запросы LINQ to Entities используют инфраструктуру служб объектов. ObjectContext — основной класс для взаимодействия с Entity Data Model как объектами CLR. Разработчик строит типовой экземпляр ObjectQuery с помощью метода ObjectContext. Универсальный класс ObjectQuery представляет запрос, который возвращает экземпляр или коллекцию типизированных сущностей. Возвращаемые объекты сущностей доступны для обновления и размещены в контексте объекта. Это также верно для объектов сущности, возвращаемых как члены анонимных типов.

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

См. также

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

Технология LINQ to Entities