Ado.net module 6 entity framework

23
ADO.NET Модуль 6 EF

Transcript of Ado.net module 6 entity framework

Page 1: Ado.net module 6 entity framework

ADO.NETМодуль 6 EF

Page 2: Ado.net module 6 entity framework

2

Що таке Entity (Сутність)

Andrey Gladky [email protected]

Сущности — это концептуальная модель физической базы данных, которая отображается на предметную область. Формально говоря, эта модель называется моделью сущностных данных (Entity Data Model — EDM). Модель EDM представляет собой набор классовклиентской стороны, которые отображаются на физическую базу данных. Тем не менее,необходимо понимать, что сущности вовсе не обязаны напрямую отображаться на схе¬му базы данных, как может показаться, исходя из названия. Сущностные классы мож¬но реструктурировать для соответствия существующим потребностям, и исполняющаясреда EF отобразит эти уникальные имена на корректную схему базы данных.

Page 3: Ado.net module 6 entity framework

3

Будівельні блоки Entity Framework

Andrey Gladky [email protected]

Две ключевых части API-интерфейса EF — это службы объектов и клиент сущности.

Под службами объектов подразумевается часть EF, которая управляет сущностямиклиентской стороны при работе с ними в коде. Службы объектов отслеживают измене¬ния, внесенные в сущность (например, смена цвета автомобиля с зеленого на синий),управляют отношениями между сущностями (скажем, просмотр всех заказов для кли¬ента с заданным именем), а также обеспечивают возможности сохранения измененийв базе данных и сохранение состояния сущности с помощью сериализации (XML идвоичной). С точки зрения программирования уровеньслужб объектов управляет любым классом, расширяющим базовый класс EntityObject.

Page 4: Ado.net module 6 entity framework

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;

Page 5: Ado.net module 6 entity framework

5

EDM – Entity Data Model

Andrey Gladky [email protected]

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

Концептуальная модель определяет сущности и отношения между ними (при их наличии).

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

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

В мире EF каждый из этих трех уровней фиксируется в файле XML-формата с расширением *. edmx.

Page 6: Ado.net module 6 entity framework

6

EDM – Entity Data Model

Andrey Gladky [email protected]

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

При компиляции основанных на EF проектов в Visual Srudio файл *.edmx применяется для генерации трех отдельных XML-файлов:

Для концептуальной модели данных (*.csdl), Для физической модели (*.ssdl) Для уровня отображения (*.msl).

Данные из этих трех XML-файлов затем объединяются с приложением в виде двоичных ресурсов. После компиляции сборка .NET имеет все необходимые данные для вызовов API-интерфейса EF, имеющихся в коде.

Page 7: Ado.net module 6 entity framework

7

Основні класи (ObjectContext)

Andrey Gladky [email protected]

Последним фрагментом мозаики EF является класс ObjectContext, определенный в пространстве имен System. Data.Objects. Генерация файла *.edmx дает в результате сущностные классы, которые отображаются на таблицы базы данных, и класс, расширяющий ObjectContext. Обычно этот класс используется для непрямого взаимодействия со службами объектов и функциональностью клиента сущности.

Класс ObjectContext предлагает набор основных служб для дочерних классов, вклю¬чая возможность сохранения всех изменений (которые в конечном итоге сводятся к об¬новлению базы данных), настройку строки соединения, удаление объектов, вызов храни¬мых процедур, а также обработку других фундаментальных деталей.

Page 8: Ado.net module 6 entity framework

8

Загальні компоненти класу ObjectContext

Andrey Gladky [email protected]

Компонент ОписAcceptAllChanges() Принимает все изменения, проведенные в сущностных

объек¬тах внутри контекста объектов

AddObject() Добавляет объект к контексту объектовDeleteObject() Помечает объект для удаления

ExecuteFunction<T>() Выполняет хранимую процедуру в базе данныхExecuteS-toreCommand() Позволяет отправлять команду SQL прямо в хранилище

данныхGetObj ectByKey() Находит объект внутри контекста объектов по его ключу

SaveChanges() Отправляет все обновления в хранилище данных

CommandTimeout Это свойство получает или устанавливает значение таймаута в секундах для всех операций контекста объектов

Connection Это свойство возвращает строку соединения, используемую текущим контекстом объектов

SavingChanges Это событие инициируется, когда контекст объектов сохраняетизменения в хранилище данных

Page 9: Ado.net module 6 entity framework

9Andrey Gladky [email protected]

Page 10: Ado.net module 6 entity framework

10Andrey Gladky [email protected]

Page 11: Ado.net module 6 entity framework

11Andrey Gladky [email protected]

Page 12: Ado.net module 6 entity framework

12

Основні класи (ObjectSet<T>)

Andrey Gladky [email protected]

Компонент ОписAddObject() Позволяет вставить новый сущностный объект в

коллекцию

CreateObj ect<T> Создает новый экземпляр указанного сущностного типаDeleteObject() Помечает объект для удаления

Производный от ObjectContext класс служит контейнером, управляющим сущностными объектами, которые сохраняются в коллекции типа ObjectSet<T>.

Page 13: Ado.net module 6 entity framework

13Andrey Gladky [email protected]

Кодова база C#

Entity SQL Служби об’єктів

Entity SQL

ЗапитLINQ IEnumerable<T>

Постачальник даних клієнта сутності

Дерево команд EntityDataReader

Постачальник даних ADO.NET

Дерево команд DbDataReader

Фізична база даних

Page 14: Ado.net module 6 entity framework

14

Генерація файла *.edmx

Andrey Gladky [email protected]

Генерації необхідної концептуальної, логічної та фізичної моделі даних, визначеної у файлі *.edmx. Один із способів передбачає застосування для цього утиліти командного рядка EdmGen.exe.

Опція Опис/mode:FullGeneration Згенерувати файли *.ssdl, * .msl, *. csdl і клієнтські

сутності з вказаної бази даних/project: Базове ім'я, яке повинно використовуватися для

згенерованого коду і файлів. Зазвичай це ім'я бази даних, з якої витягується інформація (допускається скорочена форма - / p :)

/connectionstring: Рядок з'єднання, що використовується для взаємодії з базою даних (допускається скорочена форма - / с :)

/language: Дозволяє вказати, який синтаксис повинен використовуватися для згенерованого коду - C # або VB

/pluralize Дозволяє автоматично вибирати форму множинного або одиничного імені набору сутностей, імені типусутності і імені навігаційної властивості, згідно з правилами англійської мови

Page 15: Ado.net module 6 entity framework

15

Генерація файла *.edmx

Andrey Gladky [email protected]

Дана утиліта дозволяє генерацію необхідних файлів на основі існуючої бази даних; крім того, доступні опції для генерації абсолютно нової бази даних на основі наявних сутнісних файлів.

CSDL - Conceptual schema definition language (CSDL)SSDL - store schema definition language (SSDL)MSL - mapping specification language (MSL)

На основі мови XML, які відповідно описують концептуальну модель, модель зберігання даних, а також відповідність між цими моделями.

Page 16: Ado.net module 6 entity framework

16

Генерація файла *.edmx

Andrey Gladky [email protected]

Другий спосіб генерації *.edmx-файда – використання візуального конструктора EDM з середовища Visual Studio.

Виберіть пункт меню Project => Add New ltem і вставте новий елемент ADO.NET Entity Data Model

Page 17: Ado.net module 6 entity framework

17Andrey Gladky [email protected]

Page 18: Ado.net module 6 entity framework

18Andrey Gladky [email protected]

Page 19: Ado.net module 6 entity framework

19Andrey Gladky [email protected]

Page 20: Ado.net module 6 entity framework

20Andrey Gladky [email protected]

Page 21: Ado.net module 6 entity framework

21Andrey Gladky [email protected]

Page 22: Ado.net module 6 entity framework

22Andrey Gladky [email protected]

Page 23: Ado.net module 6 entity framework

23Andrey Gladky [email protected]

Моделі роботи ADO.NET