Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Entity Framework — это набор технологий в ADO.NET, которые поддерживают разработку приложений программного обеспечения, ориентированных на данные. Архитекторы и разработчики приложений, ориентированных на данные, боролись с необходимостью достичь двух очень разных целей. Они должны моделировать сущности, связи и логику решения бизнес-задач, и они также должны работать с обработчиками данных, используемыми для хранения и извлечения данных. Данные могут охватывать несколько систем хранения, каждый из которых имеет собственные протоколы; даже приложения, работающие с одной системой хранения, должны сбалансировать требования системы хранения с учетом требований к написанию эффективного и поддерживаемого кода приложения.
Entity Framework позволяет разработчикам работать с данными в виде объектов и свойств, относящихся к домену, таких как клиенты и адреса клиентов, без необходимости беспокоиться о базовых таблицах и столбцах базы данных, где хранятся эти данные. С помощью Entity Framework разработчики могут работать на более высоком уровне абстракции при работе с данными, а также создавать и поддерживать приложения, ориентированные на данные, с меньшим кодом, чем в традиционных приложениях. Так как Entity Framework является компонентом .NET Framework, приложения Entity Framework могут выполняться на любом компьютере, на котором установлена платформа .NET Framework, начиная с версии 3.5 с пакетом обновления 1 (SP1).
Предоставление жизни моделям
Длительный и распространенный подход к проектированию при создании приложения или службы — это разделение приложения или службы на три части: модель домена, логическая модель и физическая модель. Модель домена определяет сущности и связи в системе, моделироваемой. Логическая модель реляционной базы данных нормализует сущности и связи в таблицы с ограничениями внешнего ключа. Физическая модель решает возможности конкретного обработчика данных, указывая сведения о хранилище, такие как секционирование и индексирование.
Физическая модель уточнена администраторами баз данных, чтобы повысить производительность, но программисты, пишущие код приложения, в основном ограничиваются работой с логической моделью, записывая запросы SQL и вызывая хранимые процедуры. Модели предметных областей обычно используются как инструмент для фиксации и передачи требований приложения, часто в виде инертных схем, которые просматриваются и обсуждаются на ранних этапах проекта, а затем обычно остаются без использования. Многие команды разработчиков пропускают создание концептуальной модели и начинаются с указания таблиц, столбцов и ключей в реляционной базе данных.
Entity Framework обеспечивает жизнь моделям, позволяя разработчикам запрашивать сущности и связи в модели предметной области (называемой концептуальной моделью в Entity Framework), опираясь на Entity Framework для перевода этих операций в команды источника данных. Это освобождает приложения от жестко закодированных зависимостей от определенного источника данных.
При работе с Code First концептуальная модель отображается на модель хранилища в коде. Entity Framework может выводить концептуальную модель на основе типов объектов и дополнительных конфигураций, которые вы определяете. Метаданные сопоставления создаются во время выполнения на основе комбинации того, как вы определили ваши типы доменов, и дополнительной конфигурационной информации, которую вы предоставляете в коде. Entity Framework создает базу данных по мере необходимости на основе метаданных. Дополнительные сведения см. в разделе "Создание модели".
При работе с инструментами модели данных сущностей концептуальная модель, модель хранения и сопоставления между ними выражаются в схемах на основе XML и определяются в файлах с соответствующими расширениями имен:
Язык определения концептуальной схемы (CSDL) определяет концептуальную модель. CSDL — это реализация 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 сопоставляет реляционные таблицы, столбцы и ограничения внешнего ключа в логических моделях с сущностями и связями в концептуальных моделях. Это обеспечивает большую гибкость как в определении объектов, так и в оптимизации логической модели. Средства модели данных сущности создают расширяемые классы данных на основе концептуальной модели. Эти классы являются частичными классами, которые можно расширить с дополнительными элементами, которые добавляет разработчик. По умолчанию классы, созданные для конкретной концептуальной модели, являются производными от базовых классов, которые предоставляют службы для материализации сущностей в качестве объектов, а также для отслеживания и сохранения изменений. Разработчики могут использовать эти классы для работы с сущностями и связями в качестве объектов, связанных с сопоставлениями. Разработчики также могут настраивать классы, созданные для концептуальной модели. Дополнительные сведения см. в разделе "Работа с объектами".
Доступ и изменение данных сущности
Более чем просто другое решение сопоставления с реляционными объектами, Entity Framework в основном позволяет приложениям получать доступ к данным и изменять их, представленные как сущности и связи в концептуальной модели. Entity Framework использует сведения в модели и файлах сопоставления для преобразования запросов объектов к типам сущностей, представленным в концептуальной модели, в запросы, относящиеся к источнику данных. Результаты запроса материализуются в объекты, которым управляет Entity Framework. Entity Framework предоставляет следующие способы запроса концептуальной модели и возвращать объекты:
LINQ to Entities. Предоставляет поддержку Language-Integrated query (LINQ) для запросов типов сущностей, определенных в концептуальной модели. Дополнительные сведения см. в разделе LINQ to Entities.
Entity SQL. Диалект SQL, независимый от хранилища, который работает непосредственно с сущностями в концептуальной модели и поддерживает концепции модели данных в Entity Framework. Entity SQL используется как с запросами объектов, так и с запросами, выполняемыми с помощью поставщика EntityClient. Дополнительные сведения см. в обзоре Entity SQL.
Entity Framework включает поставщик данных EntityClient. Этот поставщик управляет подключениями, преобразует запросы сущностей в запросы, относящиеся к источнику данных, и возвращает средство чтения данных, используемое Entity Framework для материализации данных сущностей в объекты. Если материализация объектов не требуется, поставщик EntityClient также может использоваться как стандартный поставщик данных ADO.NET, позволяя приложениям выполнять запросы Entity SQL и использовать возвращаемый ридер данных только для чтения. Дополнительные сведения см. в разделе EntityClient Provider для Entity Framework.
На следующей схеме показана архитектура Entity Framework для доступа к данным:
Средства модели сущностей могут создавать класс, производный от System.Data.Objects.ObjectContext или System.Data.Entity.DbContext представляющий контейнер сущностей в концептуальной модели. Этот контекст объекта предоставляет средства для отслеживания изменений и управления идентификацией, согласованностью и связями. Этот класс также предоставляет SaveChanges метод, который записывает вставки, обновления и удаления в источник данных. Как и запросы, эти изменения выполняются автоматически командами, созданными системой или хранимыми процедурами, указанными разработчиком.
Поставщики данных
Поставщик EntityClient расширяет модель поставщика ADO.NET путем доступа к данным с точки зрения концептуальных сущностей и связей. Он выполняет запросы, использующие Entity SQL. Entity SQL предоставляет базовый язык запросов, позволяющий EntityClient взаимодействовать с базой данных. Дополнительные сведения см. в разделе EntityClient Provider для Entity Framework.
Entity Framework включает обновленный поставщик данных SqlClient, поддерживающий канонические деревья команд. Дополнительные сведения см. в разделе SqlClient для Entity Framework.
Инструменты информационной модели сущностей
Вместе с средой выполнения Entity Framework Visual Studio включает средства сопоставления и моделирования. Дополнительные сведения см. в разделе "Моделирование и сопоставление".
Подробнее
Дополнительные сведения о Entity Framework см. в следующих статье:
Приступая к работе . Предоставляет сведения о том, как быстро приступить к работе с помощью краткого руководства, в котором показано, как создать простое приложение Entity Framework.
Терминология Entity Framework . Определяет множество терминов, представленных моделью данных сущности и платформой Entity Framework, и которые используются в документации Entity Framework.
Ресурсы Entity Framework . Содержит ссылки на концептуальные разделы и ссылки на внешние разделы и ресурсы для создания приложений Entity Framework.