ado.net module 6 entity framework
TRANSCRIPT
ADO.NETМодуль 6 EF
2
Що таке Entity (Сутність)
Andrey Gladky [email protected]
Сущности — это концептуальная модель физической базы данных, которая отображается на предметную область. Формально говоря, эта модель называется моделью сущностных данных (Entity Data Model — EDM). Модель EDM представляет собой набор классовклиентской стороны, которые отображаются на физическую базу данных. Тем не менее,необходимо понимать, что сущности вовсе не обязаны напрямую отображаться на схе¬му базы данных, как может показаться, исходя из названия. Сущностные классы мож¬но реструктурировать для соответствия существующим потребностям, и исполняющаясреда EF отобразит эти уникальные имена на корректную схему базы данных.
3
Будівельні блоки Entity Framework
Andrey Gladky [email protected]
Две ключевых части API-интерфейса EF — это службы объектов и клиент сущности.
Под службами объектов подразумевается часть EF, которая управляет сущностямиклиентской стороны при работе с ними в коде. Службы объектов отслеживают измене¬ния, внесенные в сущность (например, смена цвета автомобиля с зеленого на синий),управляют отношениями между сущностями (скажем, просмотр всех заказов для кли¬ента с заданным именем), а также обеспечивают возможности сохранения измененийв базе данных и сохранение состояния сущности с помощью сериализации (XML идвоичной). С точки зрения программирования уровеньслужб объектов управляет любым классом, расширяющим базовый класс EntityObject.
4
Будівельні блоки Entity Framework
Andrey Gladky [email protected]
Еще одним важным аспектом API-интерфейса EF является уровень клиента сущности. Эта часть API-интерфейса EF отвечает за работу с поставщикомданных ADO.NET для установки соединений с базойданных, генерации необходимых SQL-операторовна основе состояния сущностей и запросов LINQ,отображения извлеченных данных на корректныеформы сущностей, а также управления прочими деталями, которые обычно приходитсяделать вручную, если не используется Entity Framework.
Функциональность уровня клиента сущности определена в пространстве именSystem. Data. EntityClient. Указанное пространство имен включает набор классов, ко¬торые отображают концепции EF (такие как запросы LINQ to Entity) на лежащего в осно¬ве поставщика данныхАОО^ЕТ. Эти классы (т.е. EntityCommand и EntityConnection)очень похожи на классы, которые можно найти в составе поставщика данных ADO.NET;
5
EDM – Entity Data Model
Andrey Gladky [email protected]
В контексте API-интерфейса Entity Framework для корректного отображения данных сущностных классов на данные таблиц требуется правильное определение логики отображения. В любой системе, управляемой моделью данных, уровни сущностей, реальной базы данных и отображения разделены на три связанных части: концептуальная модель, логическая модель и физическая модель.
Концептуальная модель определяет сущности и отношения между ними (при их наличии).
Логическая модель отображает сущности и отношения на таблицы с любыми необходимыми ограничениями внешних ключей.
Физическая модель представляет возможности конкретного механизма данных, указывая детали хранилища, такие как табличная схема, разбиение на разделы и индексация.
В мире EF каждый из этих трех уровней фиксируется в файле XML-формата с расширением *. edmx.
6
EDM – Entity Data Model
Andrey Gladky [email protected]
Этот файл содержит XML-описания для сущностей, физической базы данных и инструкций по отображению этой информации между концептуальной и физической моделью.
При компиляции основанных на EF проектов в Visual Srudio файл *.edmx применяется для генерации трех отдельных XML-файлов:
Для концептуальной модели данных (*.csdl), Для физической модели (*.ssdl) Для уровня отображения (*.msl).
Данные из этих трех XML-файлов затем объединяются с приложением в виде двоичных ресурсов. После компиляции сборка .NET имеет все необходимые данные для вызовов API-интерфейса EF, имеющихся в коде.
7
Основні класи (ObjectContext)
Andrey Gladky [email protected]
Последним фрагментом мозаики EF является класс ObjectContext, определенный в пространстве имен System. Data.Objects. Генерация файла *.edmx дает в результате сущностные классы, которые отображаются на таблицы базы данных, и класс, расширяющий ObjectContext. Обычно этот класс используется для непрямого взаимодействия со службами объектов и функциональностью клиента сущности.
Класс ObjectContext предлагает набор основных служб для дочерних классов, вклю¬чая возможность сохранения всех изменений (которые в конечном итоге сводятся к об¬новлению базы данных), настройку строки соединения, удаление объектов, вызов храни¬мых процедур, а также обработку других фундаментальных деталей.
8
Загальні компоненти класу ObjectContext
Andrey Gladky [email protected]
Компонент ОписAcceptAllChanges() Принимает все изменения, проведенные в сущностных
объек¬тах внутри контекста объектов
AddObject() Добавляет объект к контексту объектовDeleteObject() Помечает объект для удаления
ExecuteFunction<T>() Выполняет хранимую процедуру в базе данныхExecuteS-toreCommand() Позволяет отправлять команду SQL прямо в хранилище
данныхGetObj ectByKey() Находит объект внутри контекста объектов по его ключу
SaveChanges() Отправляет все обновления в хранилище данных
CommandTimeout Это свойство получает или устанавливает значение таймаута в секундах для всех операций контекста объектов
Connection Это свойство возвращает строку соединения, используемую текущим контекстом объектов
SavingChanges Это событие инициируется, когда контекст объектов сохраняетизменения в хранилище данных
9Andrey Gladky [email protected]
10Andrey Gladky [email protected]
11Andrey Gladky [email protected]
12
Основні класи (ObjectSet<T>)
Andrey Gladky [email protected]
Компонент ОписAddObject() Позволяет вставить новый сущностный объект в
коллекцию
CreateObj ect<T> Создает новый экземпляр указанного сущностного типаDeleteObject() Помечает объект для удаления
Производный от ObjectContext класс служит контейнером, управляющим сущностными объектами, которые сохраняются в коллекции типа ObjectSet<T>.
13Andrey Gladky [email protected]
Кодова база C#
Entity SQL Служби об’єктів
Entity SQL
ЗапитLINQ IEnumerable<T>
Постачальник даних клієнта сутності
Дерево команд EntityDataReader
Постачальник даних ADO.NET
Дерево команд DbDataReader
Фізична база даних
14
Генерація файла *.edmx
Andrey Gladky [email protected]
Генерації необхідної концептуальної, логічної та фізичної моделі даних, визначеної у файлі *.edmx. Один із способів передбачає застосування для цього утиліти командного рядка EdmGen.exe.
Опція Опис/mode:FullGeneration Згенерувати файли *.ssdl, * .msl, *. csdl і клієнтські
сутності з вказаної бази даних/project: Базове ім'я, яке повинно використовуватися для
згенерованого коду і файлів. Зазвичай це ім'я бази даних, з якої витягується інформація (допускається скорочена форма - / p :)
/connectionstring: Рядок з'єднання, що використовується для взаємодії з базою даних (допускається скорочена форма - / с :)
/language: Дозволяє вказати, який синтаксис повинен використовуватися для згенерованого коду - C # або VB
/pluralize Дозволяє автоматично вибирати форму множинного або одиничного імені набору сутностей, імені типусутності і імені навігаційної властивості, згідно з правилами англійської мови
15
Генерація файла *.edmx
Andrey Gladky [email protected]
Дана утиліта дозволяє генерацію необхідних файлів на основі існуючої бази даних; крім того, доступні опції для генерації абсолютно нової бази даних на основі наявних сутнісних файлів.
CSDL - Conceptual schema definition language (CSDL)SSDL - store schema definition language (SSDL)MSL - mapping specification language (MSL)
На основі мови XML, які відповідно описують концептуальну модель, модель зберігання даних, а також відповідність між цими моделями.
16
Генерація файла *.edmx
Andrey Gladky [email protected]
Другий спосіб генерації *.edmx-файда – використання візуального конструктора EDM з середовища Visual Studio.
Виберіть пункт меню Project => Add New ltem і вставте новий елемент ADO.NET Entity Data Model
17Andrey Gladky [email protected]
18Andrey Gladky [email protected]
19Andrey Gladky [email protected]
20Andrey Gladky [email protected]
21Andrey Gladky [email protected]
22Andrey Gladky [email protected]
23Andrey Gladky [email protected]
Моделі роботи ADO.NET