Обзор ADO.NET Entity Framework - Сущностная модель данных

ОГЛАВЛЕНИЕ

Сущностная модель данных

Основой архитектуры Entity Framework являются ее модели. Entity Framework поддерживает модель логического хранилища, которая представляет реляционную схему базы данных. Данные в реляционной базе данных зачастую хранятся совсем не так, как приложение их использует. Это обычно заставляет разработчиков извлекать данные в том виде, как они хранятся в базе данных. Часто разработчики затем преобразуют эти данные в сущности, которые лучше подходят для обработки бизнес-правил. В этом примере схема реляционной базы данных представлена логической моделью, а бизнес-сущности представляют концептуальную модель. Entity Framework закрывает этот промежуток между моделями при помощи слоя сопоставления. Поэтому в модели Entity Framework активны три слоя:

  • Концептуальный слой
  • Слой сопоставления
  • Логический слой

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

 

Рис. 2 Разработка сущностной модели данных

Концептуальная модель определяется в XML-файле с использованием языка определения концептуальной схемы (Conceptual Schema Definition Language, CSDL). CSDL определяет сущности и взаимоотношения в том виде, в каком они представлены в бизнес-слое приложения. Логическая модель, представляющая схему базы данных, определяется в XML-файле с использованием языка определения схемы хранилища (Store Schema Definition Language, SSDL). Например, в концептуальной модели может быть сущность, на самом деле получающая данные из нескольких таблиц базы данных. Концептуальная и логическая модели могут связывать сущности взаимно-однозначно. Однако преимущество EDM в том, что это не обязательно. Слой сопоставления, определяемый с использованием языка схемы сопоставления (Mapping Schema Language, MSL), сопоставляет два остальных слоя друг другу. Это сопоставление и позволяет разработчикам программировать для концептуальной модели и сопоставлять инструкции логической модели.