Общие сведения о платформе Entity Framework

Платформа Entity Framework представляет собой набор технологий ADO.NET, обеспечивающих разработку приложений, связанных с обработкой данных. Архитекторам и разработчикам приложений, ориентированных на обработку данных, приходится учитывать необходимость достижения двух совершенно различных целей. Они должны моделировать сущности, связи и логику решаемых бизнес-задач, а также работать с ядрами СУБД, используемыми для сохранения и получения данных. Данные могут распределяться по нескольким системам хранения данных, в каждой из которых применяются свои протоколы, но даже в приложениях, работающих с одной системой хранения данных, необходимо поддерживать баланс между требованиями системы хранения данных и требованиями написания эффективного и удобного для обслуживания кода приложения.

В Entity Framework разработчики получают возможность работать с данными, представленными в форме относящихся к конкретным доменам объектов и свойств, таких как клиенты и их адреса, не будучи вынужденными обращаться к базовым таблицам и столбцам базы данных, где хранятся эти данные. Entity Framework дает разработчикам возможность работать с данными на более высоком уровне абстракции, создавать и сопровождать приложения, ориентированные на работу с данными, одновременно с этим сокращая объем кода, по сравнению с традиционными приложениями. Поскольку Entity Framework является компонентом .NET Framework, приложения Entity Framework могут работать на любом компьютере, где установлена платформа .NET Framework, начиная с версии 3.5 с пакетом обновления 1 (SP1).

В следующих секциях этого раздела представлены более подробные сведения о Entity Framework :

  • Giving Life to Models

  • Mapping Objects to Data

  • Accessing and Changing Entity Data

  • Data Providers

  • Entity Data Model Tools

  • Learning More

Применение моделей на практике

Многолетним и общим подходом к разработке является подход, при котором построение приложения или службы представляет собой его разделение на три части: модель домена, логическую модель и физическую модель. Модель домена определяет сущности и связи в моделируемой системе. Логическая модель для реляционной базы данных обеспечивает нормализацию сущностей и связей в целях создания таблиц с ограничениями внешнего ключа. В физической модели учитываются возможности конкретной системы обработки данных путем определения зависящих от ядра базы данных подробных сведений о хранении данных, которые касаются секционирования и индексирование.

Физическая модель совершенствуется администраторами базы данных в целях повышения производительности, но программисты, которые разрабатывают код приложения, в основном вынуждены ограничиваться работой с логической моделью, подготавливая SQL-запросы и вызывая хранимые процедуры. Модели домена в основном используются как инструмент для представления и обмена мнениями о требованиях к приложению, поэтому чаще всего служат в качестве практически не изменяющихся схем, которые рассматриваются и обсуждаются на ранних стадиях проекта, после чего выходят из сферы внимания. Во многих коллективах разработчиков принято пропускать этап создания концептуальной модели и начинать с определения таблиц, столбцов и ключей в реляционной базе данных.

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

  • Язык CSDL определяет концептуальную модель. Язык CSDL — это реализация модели EDM для платформы Entity Framework . Расширение файла — CSDL.

  • Язык SSDL определяет модель хранения данных, которая также называется логической моделью. Расширение файла — SSDL.

  • Язык MSL определяет сопоставление модели хранения и концептуальной модели. Расширение файла — MSL.

Модель хранения и сопоставления при необходимости могут быть изменены без изменения концептуальной модели, классов данных и кода приложения. Модели хранения зависят от поставщика, поэтому можно работать с согласованной концептуальной моделью через различные источники данных.

В Entity Framework файлы модели и сопоставления служат для выполнения операций создания, чтения, обновления и удаления, выполняемых над сущностями и связями концептуальной модели, в эквивалентные операции в источнике данных. Модель Entity Framework поддерживает даже сопоставление сущностей в концептуальной модели с хранимыми процедурами в источнике данных. Дополнительные сведения см. в разделе Спецификации языка CSDL, SSDL и MSL.

Сопоставление объектов и данных

При использовании объектно-ориентированного программирования для взаимодействия с системами хранения данных возникают сложности. Безусловно, организация классов часто напоминает организацию таблиц реляционной базы данных, но такое соответствие неидеально. Несколько нормализованных таблиц часто соответствуют единственному классу, а связи между классами представлены не так, как связи между таблицами. Например, для представления клиенту заказа на продажу в классе Order может использоваться свойство, содержащее ссылку на экземпляр класса Customer, но строка таблицы Order базы данных содержит столбец внешнего ключа (или набор столбцов) со значением, которое соответствует первичному ключу в таблице Customer. Класс Customer может включать свойство с именем Orders, содержащее коллекцию экземпляров класса Order, но таблица Customer базы данных не содержит сравнимого столбца. В этом случае Entity Framework предоставляет разработчикам гибкость в представлении связей или более полные связи модели (такие, как в базе данных). Дополнительные сведения см. в разделе Определение отношений и управление отношениями (платформа Entity Framework).

В существующих решениях была предпринята попытка устранить этот разрыв, часто называемый «несоответствием типов данных» (impedance mismatch), путем сопоставления с реляционными таблицами и столбцами только объектно-ориентированных классов и свойств. Вместо данного традиционного подхода в Entity Framework реляционные таблицы, столбцы и ограничения внешнего ключа логических моделей преобразуются в сущности и связи концептуальных моделей. Это позволяет достичь большей гибкости при определении объектов и оптимизации логической модели. С помощью инструментов модель EDM (сущностная модель данных) формируются расширяемые классы данных, основанные на концептуальной модели. Эти классы являются разделяемыми классами, которые могут быть расширены с помощью дополнительных членов, добавленных разработчиком. По умолчанию классы, сформированные для определенной концептуальной модели, являются производными от базовых классов, предоставляющих службы для материализации сущностей в виде объектов, а также для отслеживания и сохранения изменений. Разработчики могут использовать эти три класса для работы с сущностями и связями как с объектами, относящимися к ассоциациям. Разработчики смогут также настраивать классы, сформированные для концептуальной модели. Дополнительные сведения см. в разделах Работа с объектами (платформа Entity Framework) и How to: Customize Object-Layer Code Generation.

Доступ к данным сущностей и их изменение

Entity Framework — это не просто еще одно средство объектно-реляционного сопоставления. Она предоставляет приложениям возможность чтения и изменения данных, представленных в виде сущностей и связей в концептуальной модели. Entity Framework использует данные в модели и файлах сопоставления для преобразования запросов объектов к типам сущностей, представленным в концептуальной модели, в запросы, зависящие от источника данных. Результаты запросов преобразуются в объекты, которыми управляют Entity Framework . Платформа Entity Framework реализует следующие способы выполнения запросов к концептуальной модели и возврата объектов.

  • LINQ to Entities . Обеспечивает поддержку запросов LINQ для выполнения запросов к типам сущности, которые определены в концептуальной модели. Дополнительные сведения см. в разделе LINQ to Entities.

  • Entity SQL . Независимый от хранилища диалект SQL, который работает непосредственно с сущностями в концептуальной модели и поддерживает основные понятия модель EDM (сущностная модель данных) . Entity SQL используется и с запросами объектов, и с запросами, выполняемыми с помощью поставщика EntityClient. Дополнительные сведения см. в разделе Общие сведения о языке Entity SQL.

  • Методы построителя запросов. Эти методы позволяют создавать запросы Entity SQL с помощью методов запросов в стиле LINQ. Дополнительные сведения см. в разделе Методы построителя запросов (платформа Entity Framework).

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

На следующей схеме показана архитектура доступа к данным Entity Framework :

Схема архитектуры Entity Framework

Средства модель EDM (сущностная модель данных) могут сформировать класс, производный от ObjectContext, который представляет контейнер сущностей в концептуальной модели. Контекст объекта предоставляет средства для отслеживания изменений и управления идентификаторами, параллелизмом и связями. Этот класс представляет также доступ к методу SaveChanges, который записывает результаты вставки, обновления и удаления данных в источник данных. Подобно запросам, эти изменения производятся либо командами, автоматически сформированными системой, либо хранимыми процедурами, указанными разработчиком. Дополнительные сведения см. в разделе Создание, добавление, изменение и удаление объектов (платформа Entity Framework).

Поставщики данных

Поставщик EntityClient расширяет модель поставщика ADO.NET путем доступа к данным в терминах сущностей и связей концептуальной модели. Выполняет запросы на языке Entity SQL . Entity SQL представляет базовый язык запросов, с помощью которого EntityClient обменивается данными с базой данных. Дополнительные сведения см. в разделе Поставщик EntityClient для платформы Entity Framework.

Приложение Entity Framework включает обновленный поставщик данных SqlClient, который поддерживает канонические деревья команд. Дополнительные сведения см. в разделе Поставщик данных .NET Framework для SQL Server (SqlClient) на платформе Entity Framework.

Средства работы с моделью EDM

Наряду со средой выполнения Entity Framework , .NET Framework версия 4 включает генератор моделей EDM (EdmGen.exe). Эта программа командной строки соединяется с источником данных и формирует файлы модели и сопоставления на основе сопоставления между сущностями и таблицами типа «один к одному». В этой программе используется также файл концептуальной модели (с расширением CSDL) для формирования файла уровня объектов, содержащего классы, которые представляют типы сущностей и контекст ObjectContext. Дополнительные сведения см. в разделе Генератор модели EDM (EdmGen.exe).

Visual Studio 2010 включает в себя обширный набор поддерживаемых средств для создания и обслуживания файлов моделей и сопоставлений в приложении Visual Studio. Конструктор модель EDM (сущностная модель данных) поддерживает создание усовершенствованных сценариев сопоставления (таких как наследование типа «одна таблица на тип» и «одна таблица на иерархию»), а также разделение сущностей, которые сопоставлены с несколькими таблицами. Дополнительные сведения см. в разделе ADO.NET Entity Data Model Designer.

Получение дополнительных сведений

В следующих разделах приводятся подробные сведения о службах Entity Framework .

  • Ресурсы платформы Entity Framework
    Содержит ссылки на концептуальные разделы, а также ссылки на другие разделы и ресурсы по созданию приложений Entity Framework .

См. также

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

Платформа ADO.NET Entity Framework