ado.net module 6 entity framework

Post on 06-Jan-2017

105 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ADO.NETМодуль 6 EF

2

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

Andrey Gladky KspDevelop@gmail.com

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

3

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

Andrey Gladky KspDevelop@gmail.com

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

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

4

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

Andrey Gladky KspDevelop@gmail.com

Еще одним важным аспектом 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 KspDevelop@gmail.com

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

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

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

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

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

6

EDM – Entity Data Model

Andrey Gladky KspDevelop@gmail.com

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

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

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

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

7

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

Andrey Gladky KspDevelop@gmail.com

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

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

8

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

Andrey Gladky KspDevelop@gmail.com

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

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

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

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

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

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

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

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

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

9Andrey Gladky KspDevelop@gmail.com

10Andrey Gladky KspDevelop@gmail.com

11Andrey Gladky KspDevelop@gmail.com

12

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

Andrey Gladky KspDevelop@gmail.com

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

коллекцию

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

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

13Andrey Gladky KspDevelop@gmail.com

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

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

Entity SQL

ЗапитLINQ IEnumerable<T>

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

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

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

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

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

14

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

Andrey Gladky KspDevelop@gmail.com

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

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

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

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

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

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

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

15

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

Andrey Gladky KspDevelop@gmail.com

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

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

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

16

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

Andrey Gladky KspDevelop@gmail.com

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

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

17Andrey Gladky KspDevelop@gmail.com

18Andrey Gladky KspDevelop@gmail.com

19Andrey Gladky KspDevelop@gmail.com

20Andrey Gladky KspDevelop@gmail.com

21Andrey Gladky KspDevelop@gmail.com

22Andrey Gladky KspDevelop@gmail.com

23Andrey Gladky KspDevelop@gmail.com

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

top related