Russian Federation
Voronezh, Voronezh, Russian Federation
This article discusses the use of the ORM Entity Framework. Entity Framework saves developers from writing a lot of data access code. When using this framework, an abstraction layer is created, the so-called EDM model, which defines the rules for mapping objects to the database. Code First is used when the database has not yet been created. Figure 1 shows Code First's approach to creating a database, which is created based on domain classes and a context class, i.e. First you need to create an application in C#, and then Entity Framework will create a database from the existing code.
Entity Framework, Code First, database, class, context
Entity Framework представляет собой объектно-ориентированную технологию от компании Microsoft для доступа к данным. Данная технология является ORM-инструментом (object-relational mapping - отображения данных на реальные объекты) и позволяет работать с базами данных, представляя собой более высокий уровень абстракции.
Центральной концепцией Entity Framework является понятие сущности. Сущность – некоторый набор данных, связанный с объектом.
Технология ускоряет разработку и реализует паттерн «Репозиторий», что позволяет создавать приложения, взаимодействующие с реляционными СУБД с помощью строго типизированных объектов .NET
Подход Code First — это подход к разработке программного обеспечения, в котором сначала создается код реализации системы, а затем на его основе автоматически генерируется соответствующая схема базы данных или контракт между компонентами. Entity Framework имеет возможность автоматически генерировать таблицы в базе данных по указанным в контексте подключения классам.
На рис. 1 представлен подход Code First к созданию базы данных на основе класса контекста и классов, описывающих сущности, т.е. сначала необходимо создать приложение на C#, а затем Entity Framework из имеющегося кода создаст базу данных.
Рисунок 1 – Схема работы подхода Code First в Entity Framework
Библиотеку Entity Framework можно установить, используя диспетчер пакетов NuGet.
Рисунок 2 – Entity Framework
Перед началом работы необходимо создать класс – контекст подключения к базе данных.
Рисунок 3 – Класс контекста базы данных DiplomDatabase.cs
Рисунок 4 – Подключение библиотеки Entity Framework в проект
При первом обращении к контексту базы данных выполняется проверка на то, что указанная в строке подключения БД существует. Если она отсутствует, то происходит создание новой и добавление исходных данных (рисунок 5).
Рисунок 5 – Контекст базы данных с проверкой на существование в конструкторе класса
DiplomDatabase является наследником класса DbContext, который используется для взаимодействия с базой данных.
Каждый таблица описывается типом DbSet с указанием соответствующего ей класса. Entity Framework при создании базы данных анализирует структуру классов-сущностей, которые используются в программе, и создает соответствующие таблицы.
Например, в нашем случае класс User выглядит так (рисунок 6).
Рисунок 6 – Класс User
Атрибуты «Key» и «DatabaseGenerated» указывают на то, что данное свойство является первичным ключом с автоинкрементом.
Класс «Users» содержит свойства «Id», «Login» и «Password». Соответственно в таблице, которая будет создана при запуске программы, будет три столбца (рисунок 7).
Рисунок 7 – определение первичного ключа
Свойство Calcs позволяет установить отношение один ко многим с таблицей Calcs. Данные для справочного материала добавляются сразу при создании БД. Остальные таблицы заполняет пользователь во время работы с программой. Пример заполнения таблицы приведен на рисунке 8.
Рисунок 8 – Описание таблицы Materials
Класс Condensator описывает таблицу (рисунок 9), содержащую характеристики конденсаторов, которые могут быть использованы при построении схемы.
Рисунок 9 – Класс Condensator
Описание используемого материала проводников и контактных площадок представлено в классе Material.cs (рисунок 10).
Рисунок 10 – Класс Material.cs
Таблица базы данных, содержащая сведения о резисторах описана в классе Resistor.cs (рисунок 11).
Рисунок 11 – Класс Resistor.cs
Entity Framework Code First создаст базу данных, используя параметр заданный в классе DiplomDatabase.cs и переданный в конструктор класса DBContext. База данных создается в SQL Express, т.е. в локальной базе данных. Он автоматически создаст четыре таблицы Resistor, Material, Condensator, User. Для просмотра базы данных откройте «Обозреватель объектов SQL Server» и выберите свою базу.
1. Rihter, Dzh. CLR via C#. Programmirovanie na platforme Microsoft .NET Framework 4.5 na yazyke C# / Dzh. Rihter. - SPb.: Piter, 2019. - 896 c.
2. Bederdinova, O. I. Programmirovanie na yazykah vysokogo urovnya : ucheb. posobie / O.I. Bederdinova, T.A. Mineeva, Yu.A. Vodovozova. – Moskva : INFRA-M, 2019.– 159 s. - Tekst: elektronnyy. - URL: https://znanium.com/catalog/product/1044396. – Rezhim dostupa: po podpiske.
3. Horev, P. B. Ob'ektno-orientirovannoe programmirovanie s primerami na S# : uchebnoe posobie / P.B. Horev. – Moskva: FORUM: INFRA-M, 2020. – 200 s. – (Vysshee obrazovanie: Bakalavriat). - ISBN 978-5-00091-680-3. - Tekst: elektronnyy. - URL: https://znanium.com/catalog/product/1069921 – Rezhim dostupa: po podpiske.
4. Lerman, J., Miller, R. Programming Entity Framework: Code First/ J. Lerman, R. Miller; - O’Reilly Media, Inc, 2011 – 177 p.- ISBN: 978-1449312947
5. Poluektov A.V., Makarenko F.V., Yagodkin A.S. Ispol'zovanie storonnih bibliotek pri napisanii programm dlya obrabotki statisticheskih dannyh // Modelirovanie sistem i processov. – 2022. – T. 15, № 2. – S. 33-41.