Entity framework уроки
Подход Code-First
Дата изменения: 12.10.2017
Поход, называемый Code First (сначала код) предполагает минимальное участие в проектировании сущностей базы данных программистом. Он просто пишет код, остальное делает Entity и Visual Studio.
Он подходит в случаях если главное в проекте – бизнес логика, а база данных – это способ хранения данных. Или в случаях если проект уже написан, но в качестве источников данных использованы списки, массивы, коллекции. Code First позволяет с минимальными усилиями изменить проект с использованием баз данных в качестве источников данных вместо стандартных коллекций .NET.
Мы создадим веб приложение использующее базу данных многоквартирного дома. В Основе его будут две модели: жильцы и квартиры.
Создание веб приложения
Первый шаг — создание проекта:
- Откройте Visual Studio и создайте новый проект с именем EnrollmentApp
- Выберите шаблон MVC, уберите аутентификацию (кнопка изменить проверку подлинности) и нажмите создать проект.
Когда проект будет создан подключите к нему Entity.
Создание классов модели
Работа с Entity при подходе Code First начинается с создания типов данных. Типом, описывающим жильца будет класс Tenant, описывающим квартиру – класс Apartment.
Создайте в папке Models проекта соответствующие файлы классов и определите их как показано ниже:
Файл Tenant.cs:
Файл Apartment.cs:
Оба класса будут преобразованы в наборы данных, то есть таблицы базы данных с помощью Entity. Их свойства станут столбцами таблиц. Значение этих свойств значениями в строках.
Чтобы Entity понял, как преобразовать тип C# в тип базы данных, мы при определении должны следовать нескольким правилам:
- все свойства должны быть открытыми (public);
- свойство, которое должно стать первичным ключом таблицы должно иметь имя ID, либо его имя должно оканчиваться на ID (CustomerID, BisnessID, ApartmentID)
- если нужно пометить свойство как первичный ключ будущей сущности, но его имя не содержит ID, то сделайте это с помощью атрибута [Key];
- если класс не содержит ни одного свойство содержащего в имени ID, Entity сам добавит такой столбец, имя этого столбца будет совпадать с именем таблицы.
Кроме обычных свойств классы моделей могут содержать виртуальные свойства. Они становятся навигационными свойствами при преобразовании в модель EDX. Навигационные свойства характеризуют связь между таблицами.
В нашем случае это связь один ко многим – несколько жильцов могут быть зарегистрированы в одной квартире. Поэтому класс Apartment содержит внутренний массив экземпляров Tenant.
Создание контекста данных
Класс, который обеспечивает взаимодействие между классами-моделями и одноименными таблицами в базе данных называется контекстом.
Создавая контекст мы как бы говорим инфраструктуре: «Я не хочу разбираться в твоих API, дай мне простой инструмент манипуляции данными». Этот инструмент – контекст.
Контекст класс, наследуемый от System.Data.Entity.DbContext.
Он содержит:
- строготипизированые открытые свойства DbSet;
- один или несколько конструкторов.
Рекомендуемый Microsoft стиль – это создание контекста в отдельной папке проекта.
Создайте в проекте папку DAL (от Data Acsess Layer). Затем создайте в папке новый класс, назовите его RegistrationContext.cs и приведите его в соответствие с содержимым ниже:
RegistrationContext.cs
Строка подключения
После создания контекста нужно добавить в приложение строку подключения БД.
Строка подключения – это описание нескольких параметров:
- имя базы данных;
- где расположены ее файлы;
- кто ее поставщик;
- режим подключения.
Указать строку подключения можно несколькими способами:
- В файле web.config.
- В конструкторе.
В нашем приложении мы будем использовать локальную базу данных. Локальные базы данных расположены на локальных серверах, то есть расположены на той же машине с которой запускается приложение. Сервер, который управляет локальными базами MS SQL Server Express, он встроен в Visual Studio.
Однако, в реальных приложениях такой подход не годится. MS SQL Server Express не умеет работать с ISS.
В файле web,config строка подключения должна быть вписана внутри тега перед тегом
На листинге ниже выделена серым цветом. Располагается внутри тега
Если вы не впишите строку подключения в файл web.config, то компилятор будет искать ее в параметре конструктора контекста.
Для локальных БД достаточно только имени БД. Для удаленных нужно вписывать полную строку.
Все о строках подключения читайте в официальной документации Microsoft.
Сайт с шаблонами для срока подключения к базам данных разных производителей смотрите на сайте https://www.connectionstrings.com
После создания строки подключения Entity ничего больше от вас не нужно. Она знает какие типы вы храните в базе из контекста. Из строки подключения знает где располагается база и какой у нее провайдер.
Осталось достроить веб приложение создав для него бизнес логику и логику представлений
Создание контроллера и представлений
Бизнес логика контроллера в MVC приложения традиционно лежит на плечах контроллера, логика представлений – на представлениях.
Создать ее автоматически на основе моделей вы можете, использовав шаблон в Visual Studio.
- Щелкните правой кнопкой на папке Сontrollers в проекте. Выберите Добавить(Add) -Контроллер.
- Выберите шаблон Контроллер MVC 5 c использованием Entity Framework.
В выпадающем списке «класс контекста» выберите созданный вами контекст (RegistrationContext), в списке «класс модели» укажите класс Tentant. Галочки оставьте по умолчанию.
После нажатия кнопки добавить Visual Studio на создаст вам контроллер с методами действия для каждой возможно операцией с базой данных. Мы рассмотрим их на следующих уроках.
Главное, что все они работают на основе контекста, объект которого создается в классе контроллера:
Поиск:
Добавление элемента:
Удаление:
А так сохраняются изменения после каждой операции:
Все операции на основе объекта контекста.
Создание инициализатора
Entity может автоматически создать, удалить или произвести любые изменения с базой данных, когда приложение запускается. Инициализатор – это блок кода, который указывает, что должно быть сделано с базой, когда приложение только запустилось.
Очевидно, что, если приложение запущено в первый раз, в базе нет никаких данных. Это можно исправить, добавив в инициализатор логику добавления в базу первичных данных. Их затем можно удалить, изменить или добавить новые.
Инициализатор, как и контекст просто класс. Часть общей логики DAL (Data Access Layer)
С помощью средств Visual Studio добавьте в папку DAL (в ту же, где вы создавали контекст) новый класс с названием EnrollmentInitializer.cs
Содержание файла EnrollmentInitializer.cs:
EnrollmentInitializer.cs
В классе реализован единственный метод Seed, который принимает параметром контекст данных. Мы добавляет элементы список. А затем списки по элементной — таблицу посредством объекта контекста.
Приложение готово. Вы можете отшлифовать его, пройдясь по представлениям, настроив поля ввода, изменив домашнюю страницу.
Главное, чего мы добились – это сохранения в базу и извлечение из нее простыми средствами.
Чтобы просмотреть, что после запуска приложения у вас оказалось в базе.
- Закройте браузер и прервите выполнение приложения;
- Откройте окно обозреватель серверов и внутри пункта подключение данных строчку с названием вашего контекста (RegistrationContext). Раскройте этот пункт.
- Щелкните правой кнопкой на интересующей вас таблице и выберите пункт «показать таблицу данных»
Entity Framework 6
Всем доброго времени суток. В данной первой статье, посвященной Entity Framework, я бы хотел рассказать для чего эта технология нужна и какие преимущества предлагает. Entity Framework — это объектно — реляционный модуль сопоставления, который позволяет разработчикам работать с реляционными базами данных, как с объектами классов. Таблица в базе данных — это класс. Поля таблицы — это свойства класса. Использование данной технологии позволяет оградить программистов от написания большого объёма кода, который обычно требуется для доступа к данным.
Данная технология впервые появилась в 2008 году (версия 1.0), на текущий момент последняя версия — Entity Framework 6. В настоящий момент — это рекомендуемая Microsoft технология для работы с базами данных.
Entity Framework , другими словами, можно назвать библиотекой ORM от Microsoft.
ORM (Object relational mapping) — это объектно-реляционное отображение (сопоставление) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
Entity Framework (EF) – это слой абстракции (модель сущностей или, её ещё по-другому называют, концептуальная модель, Entity Data Model (EDM) , которая определяет правила отображения объектов в базе данных.
В EF существует несколько подходов к работе, или по-другому, несколько способов создания этой модели:
Database First – создание модели сущностей и объектной модели (классы) из существующей базы данных. Описание модели сущностей сохраняется в виде xml файла, по которому EF создает модель EDM.
Model First — создание xml-файла модели при помощи дизайнера, на основании которой генерируются база данных и классы (объектная модель).
Code First – написание кода классов при отсутствии модели и БД. Далее на основе этих классов происходит генерация базы данных и модели сущностей EDM.
В следующих уроках будет рассмотрен каждый из этих подходов.
Давайте теперь посмотрим как добавить эту технологию в наш проект. Добавлять будем с помощью менеджера пакетов «Nuget». В проекте выбираем References => «Управление пакетами NuGet» :
Если менеджер пакетов отсутствует — его нужно установить. Его можно найти в Google по запросу «add nuget to visual studio 2013». Либо для Visual Studio 2013 можно скачать по ссылке .
На данном этапе хотелось бы отметить, что иногда менеджер пакетов не может отобразить ни один пакет. Связано это с тем, что у вас скорее всего запущены какие-либо программы по фильтрации трафика. Самый простой вариант в данном случае — это отключить антивирус. Далее в поиске набираем «Entity Framework»:
Нажимаем «Установить». Далее принимаем лицензионное соглашение. После этого Entity Framework устанавливается.
После этого в ссылках проекта мы видим, что Entity Framework был успешно установлен:
В данной статье вы узнали, что такое Entity Framework и научились добавлять его в свой проект.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.
Entity Framework Начало работы с Entity Framework
замечания
Entity Framework (EF) — объектно-реляционный картограф (ORM), который позволяет разработчикам .NET работать с реляционными данными с использованием объектов, специфичных для домена. Это устраняет необходимость в большей части кода доступа к данным, который разработчикам обычно приходится писать.
Entity Framework позволяет создавать модель путем написания кода или использования полей и строк в EF Designer. Оба этих подхода могут использоваться для таргетинга на существующую базу данных или создания новой базы данных.
Entity Framework является основным ORM, который Microsoft предоставляет для .NET Framework и рекомендованной Microsoft технологии доступа к данным.
Версии
Установка пакета Entity Framework NuGet
В своей Visual Studio откройте окно Solution Explorer, затем щелкните правой кнопкой мыши на своем проекте и выберите « Управление пакетами NuGet» в меню:
В открывшемся окне введите EntityFramework в поле поиска в правом верхнем углу.
Если вы используете Visual Studio 2015, вы увидите что-то вроде этого:
Затем нажмите «Установить».
Мы также можем установить инфраструктуру сущности с помощью консоли диспетчера пакетов. Для этого вам сначала нужно открыть его с помощью меню «Сервис» -> «Диспетчер пакетов NuGet» -> «Диспетчер пакетов», затем введите следующее:
Это установит Entity Framework и автоматически добавит ссылку на сборку в вашем проекте.
Использование Entity Framework из C # (сначала код)
Сначала код позволяет создавать ваши сущности (классы) без использования GUI-дизайнера или файла .edmx. Сначала он называется Code , потому что вы можете сначала создать свои модели, а структура Entity будет автоматически создавать базу данных в соответствии с сопоставлениями. Или вы также можете использовать этот подход с существующей базой данных, которая сначала называется кодом с существующей базой данных. Например, если вы хотите, чтобы таблица содержала список планет:
Теперь создайте свой контекст, который является мостом между вашими сущностями и базой данных. Дайте ему один или несколько DbSet<> :
Мы можем использовать это, выполнив следующие действия:
В этом примере мы создаем новую Planet с свойством Name со значением «Jupiter» и свойство AverageDistanceFromSun со значением 778.5
Затем мы можем добавить эту Planet в контекст с помощью DbSet Add() DbSet и зафиксировать наши изменения в базе данных с помощью метода SaveChanges() .
Или мы можем извлекать строки из базы данных:
Что такое Entity Framework?
Написание и управление кодом ADO.Net для доступа к данным — утомительная и монотонная работа. Microsoft предоставила инфраструктуру O / RM под названием «Entity Framework» для автоматизации действий, связанных с базой данных для вашего приложения.
Структура Entity — это структура Object / Relational Mapping (O / RM). Это усовершенствование ADO.NET, которое дает разработчикам автоматизированный механизм для доступа и хранения данных в базе данных.
Что такое O / RM?
ORM — это инструмент для хранения данных из объектов домена в реляционную базу данных, такую как MS SQL Server, автоматическим способом без большого программирования. O / RM включает в себя три основные части:
- Объекты класса домена
- Объекты реляционной базы данных
- Отображение информации о том, как объекты домена сопоставляются с объектами реляционной базы данных ( ex tables, views и хранимые процедуры)
ORM позволяет нам сохранить наш дизайн базы данных отдельно от нашего класса класса. Это делает приложение удобным и расширяемым. Он также автоматизирует стандартную операцию CRUD (создание, чтение, обновление и удаление), так что разработчику не нужно писать его вручную.