LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

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

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

178 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 280 281 282 283 284 285 286 287 288 ... 407
    Перейти на страницу:
    данных вместе с выборочными данными. Остаток главы посвящен испытаниям уровня доступа к данным AutoLot посредством автоматизированных интеграционных тестов.

    "Сначала код" или "сначала база данных"

    Прежде чем приступить к построению уровня доступа к данным, давайте обсудим два способа работы с EF Core и базой данных: "сначала код" или "сначала база данных". Оба они совершенно допустимы, а выбор применяемого подхода в значительной степени зависит от самой команды разработчиков.

    Подход "сначала код" означает, что вы создаете и конфигурируете свои сущностные классы и производный от DbContext класс в коде и затем используете миграции для обновления базы данных. Подобным образом разрабатывается большинство новых проектов. Преимущество подхода "сначала код" заключается в том, что в ходе построения приложения сущности развиваются на основе имеющихся у него потребностей. Миграции поддерживают синхронизацию с базой данных, поэтому проектное решение базы данных эволюционирует вместе с приложением. Такой развивающийся процесс проектирования популярен в командах гибкой разработки, поскольку он обеспечивает создание нужных частей в надлежащее время.

    Если у вас уже есть база данных или вы предпочитаете, чтобы проектное решение базы данных управляло разрабатываемым приложением, тогда должен применяться подход "сначала база данных". Вместо создания производного от DbContext класса и всех сущностных классов вручную вы формируете шаблоны классов из базы данных. В случае изменения базы данных вам придется заново сформировать шаблоны классов для сохранения своего кода в синхронизированном с базой данных состоянии. Любой специальный код в сущностных классах или в классе, производном от DbContext, должен быть помещен в частичные классы, чтобы он не переписывался при повторном создании шаблонов классов. К счастью, именно по этой причине процесс формирования шаблонов строит частичные классы.

    Какой бы подход вы ни выбрали, "сначала код" или "сначала база данных", имейте в виду, что он является обязательством. Если вы используете подход "сначала код", то все изменения вносятся в классы сущностей и контекста, а база данных обновляется с применением миграций. Если вы используете подход "сначала база данных", то все изменения должны вноситься в базу данных, после чего будет требоваться повторное создание шаблонов классов. Приложив некоторые усилия по планированию, вы можете переключаться с подхода "сначала база данных" на подход "сначала код" (и наоборот), но не должны вручную вносить изменения в код и базу данных одновременно.

    Создание проектов AutoLot.Dal и AutoLot.Models

    Уровень доступа к данным AutoLot состоит из двух проектов, один из которых содержит код, специфичный для EF Core (производный от DbContext класс, фабрику контекстов, хранилища, миграции и т.д.), а другой — сущности имодели представлений. Создайте новое решение под названием Chapter23_AllProjects и добавьте в него проект библиотеки классов .NET Core по имени AutoLot.Models. Удалите стандартный класс, созданный шаблоном, и добавьте в проект следующие пакеты NuGet:

    Microsoft.EntityFrameworkCore.Abstractions

    System.Text.Json

    Пакет Microsoft.EntityFrameworkCore.Abstractions обеспечивает доступ ко многим конструкциям EF Core (вроде аннотаций данных) и легковеснее пакета Microsoft.EntityFrameworkCore. Добавьте в решение еще один проект библиотеки классов .NET Core по имени AutoLot.Dal. Удалите стандартный класс, сгенерированный шаблоном, включите ссылку на проект AutoLot.Models и добавьте в проект перечисленные далее пакеты NuGet:

    Microsoft.EntityFrameworkCore

    Microsoft.EntityFrameworkCore.SqlServer

    Microsoft.EntityFrameworkCore.Design

    Пакет Microsoft.EntityFrameworkCore предоставляет общую функциональность для EF Core. Пакет Microsoft.EntityFrameworkCore.SqlServer предлагает поставщик данных SQL, а пакет Microsoft.EntityFrameworkCore.Design требуется для инструментов командной строки EF Core.

    Чтобы выполнить все указанные ранее шаги в командной строке, введите показанные ниже команды (в каталоге, где хотите создать решение):

    dotnet new sln -n Chapter23_AllProjects

    dotnet new classlib -lang c# -n AutoLot.Models -o .AutoLot.Models -f net5.0

    dotnet sln .Chapter23_AllProjects.sln add .AutoLot.Models

    dotnet add AutoLot.Models package Microsoft.EntityFrameworkCore.Abstractions

    dotnet add AutoLot.Models package System.Text.Json

    dotnet new classlib -lang c# -n AutoLot.Dal -o .AutoLot.Dal -f net5.0

    dotnet sln .Chapter23_AllProjects.sln add .AutoLot.Dal

    dotnet add AutoLot.Dal reference AutoLot.Models

    dotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore

    dotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.Design

    dotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.SqlServer

    dotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.Tools

    На заметку! В случае работы на машине с операционной системой, отличающейся от Windows, используйте символ разделителя каталогов, который принят в вашей системе.

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

    <PropertyGroup>

      <TargetFramework>net5.0</TargetFramework>

      <Nullable>enable</Nullable>

    </PropertyGroup>

    Создание шаблонов для класса, производного от 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.ModelsEntities

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

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

    1 ... 280 281 282 283 284 285 286 287 288 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки