Читаем Язык программирования C#9 и платформа .NET5 полностью

Поступать так придется в отношении всех команд CLI, приводимых в настоящей главе. После создания проектов обновите каждый файл *.csproj для включения ссылочных типов, допускающих null, из версии C# 8. Обновление выделено полужирным:


  net5.0

  enable

Создание шаблонов для класса, производного от DbContext, и сущностных классов

Следующий шаг предусматривает формирование шаблонов для базы данных AutoLot из главы 21 с применением инструментов командной строки EF Core. Перейдите в каталог проекта AutoLot.Dal в окне командной строки или в консоли диспетчера пакетов Visual Studio.


На заметку! В папке Chapter_21 хранилища GitHub для этой книги находятся резервные копии базы данных, ориентированные на Windows и Docker. За инструкциями по восстановлению базы данных обращайтесь в главу 21.


Воспользуйтесь инструментами командной строки EF Core, чтобы сформировать для базы данных AutoLot шаблоны сущностных классов и класса, производного от DbContext. Вот как выглядит команда(которая должна вводиться в одной строке):


dotnet ef dbcontext scaffold "server=.,5433;Database=AutoLot;

User Id=sa;Password=P@ssw0rd;"

Microsoft.EntityFrameworkCore.SqlServer

 -d -c ApplicationDbContext --context-namespace

AutoLot.Dal.EfStructures --context-dir EfStructures

 --no-onconfiguring -n AutoLot.Models.

Entities -o ..\AutoLot.Models\Entities


Предыдущая команда формирует шаблоны для базы данных, находящейся по заданной строке подключения (для контейнера Docker, применяемого в главе 21), с использованием поставщика баз данных SQL Server. Флаг -d заставляет, где возможно, отдавать предпочтение аннотациям данных (перед Fluent API). В указывается имя контекста, в --context-namespaces — пространство имен для контекста, в --context-dir — каталог (относительно каталога текущего проекта) для контекста. С помощью --no-onconfiguring исключается метод OnConfiguring. В задается выходной каталог для файлов сущностных классов (относительно каталога текущего проекта) и, наконец, в -n — пространство имен для сущностных классов. Показанная выше команда помещает все сущности в каталог Entities проекта AutoLot.Models, а класс ApplicationDbContext — каталог EfStructures проекта AutoLot.Dal.

Вы заметите, что шаблон для хранимой процедуры не создавался. Если бы в базе данных присутствовали какие-то представления, то для них были бы созданы шаблоны сущностей без ключей. Поскольку в EF Core не предусмотрено конструкций, напрямую отображаемых на хранимые процедуры, создать шаблон невозможно. С применением EF Core можно создавать хранимые процедуры и другие объекты SQL, но на этот раз шаблоны формируются только для таблиц и представлений.

Переключение на подход "сначала код"

Теперь, имея базу данных, для которой сформированы сущности, самое время переключиться с подхода "сначала база данных" на подход "сначала код". Для такого переключения должна быть создана фабрика контекстов, а также миграция из текущего состояния проекта. Затем либо база данных удаляется и воссоздается за счет применения миграции, либо задействуется фиктивная реализация для "обмана" инфраструктуры EF Core.

Создание фабрики экземпляров класса, производного от DbContext, на этапе проектирования

Как было указано в главе 22, инструменты командной строки EF Core используют реализацию IDesignTimeDbContextFactory для создания экземпляра класса, производного от DbContext. Создайте в каталоге EfStructures проекта AutoLot.Dal новый файл класса по имени ApplicationDbContextFactory.cs. Добавьте в файл класса следующие пространства имен:


using System;

using Microsoft.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore.Design;


Детали фабрики раскрывались в предыдущей главе, а здесь представлен только код. Для информационных целей посредством дополнительного вызова Console.WriteLine на консоль выводится строка подключения. Не забудьте привести строку подключения в соответствие со своей средой:


namespace AutoLot.Dal.EfStructures

{

   public class ApplicationDbContextFactory

     : IDesignTimeDbContextFactoryContext>

  {

Перейти на страницу:

Похожие книги

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT