Введение.
Entity Framework – это платформа ORM с открытым исходным кодом для приложений.NET, поддерживаемая Microsoft.
Структура Entity Framework
Ядром Entity Framework является модель EDM (Entity Data Model) суть которой заключается в хранении сущностей в виде строго типизированных классов.
Существует три подхода по проектированию БД:
DataBase First – Сначала создается БД, затем генерируется модель базы данных в среде VS. В среде создается собственная er-диаграмма и набор классов, каждый из которых соответствует таблице БД.
Model First – ER диаграмма создается прямо в VS, а затем на основании модели генерируется БД и создается набор классов, каждый из которых соответствует таблице БД.
Code First – разработчик пишет классы, а фреймворк создает БД и свою промежуточную er-диаграмму.
Итак, мы будем использовать подход DataBaseFirst. Из каких этапов состоит разработка приложения:
1. Создание БД на MS SQL Server. Необходимо определить из каких таблиц будет состоять БД и создать их.
2. Создаем проект WindowsForms.
3. Необходимо создать модель EDM.
4. Работа с данными (4 операции добавление, удаление, изменение и поиск)
Рассмотрим все эти этапы на примере.
Возьмем нашу всем известную БД World и создадим простое приложение которое будет работать с таблицей country. Таким образом, наш первый этап завершен. Далее создаем проект WF и добавим на форму элемент dataGreadView – это таблица для отображения данных из таблицы country.
Далее создаем модель EDM:
1. Добавляем к нашему проекту модель EDM
Выбираем тип модели «из базы данных»
Создаем подключение к БД:
Указываем необходимые нам таблицы:
Нажимаем кнопку готово и наша модель будет создана. После создания модели необходимо перестроить наше решение.
После создания модели нам становятся доступны методы для работы с данными. Привяжем нашу таблицу dataGriedView к данным таблицы country:
Запретим прямую работу с таблицей:
Обратим внимание, что после всех этих манипуляций на форму был добавлен еще один компонент BindingSource
Основная задача компонента BindingSource - обеспечить унифицированный доступ к источнику данных. Но он также помогает использовать несколько возможностей:
1. В случае привязки таблицы к BindingSource появляется возможность сортировки, фильтрации и поиска.
2. BindingSource может являться источником данных не только для элементов управления, но и для самого BindingSource.
3. Вы можете работать с одним источником данных, привязанным ко многим элементам управления.
Для того, чтобы данные загрузились необходимо создать в коде объект класса, соответствующий вашей модели
И заполнить компонент BindingSource данными, полученными с помощью этого объекта. Код формы примет вид:
Проверим работу программы и убедимся что данные выводятся верно.
Для работы с данными таблицы принято запрещать исправлять данные непосредственно в таблице, а работу с ними организовывать через текстовые поля. Добавим такие поля на форму и привяжем их к данным таблицы, для этого в свойствах текстового поля необходимо указать соответствующую привязку:
Результат будет следующим:
Работа с данными таблицы.
Далее заметим, что в данном коде возможны исключения, например, когда ваша база недоступна приложению или введены некорректные данные. Поэтому поместим весь этот код внутрь конструкции try catch.
Код наших двух кнопочек примет вид:
Рассмотрим как удалять строки из таблицы.