Mir-knigi.info
mir-knigi.info » Книги » Компьютеры и интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте mir-knigi.info (Mir knigi) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

namespace AutoLot.Dal.Tests

{

  public class SampleTests

  {

  }

}

Начните с создания теста

[Fact]
. В тесте
[Fact]
все значения содержатся внутри тестового метода. Следующий простой пример проверяет, что 3 + 2 = 5:

[Fact]

public void SimpleFactTest()

{

  Assert.Equal(5,3+2);

}

Что касается теста

[Theory]
, то значения передаются тестовому методу и могут поступать из атрибута
[InlineData]
, методов или классов. Здесь будет использоваться только атрибут
[InlineData]
. Создайте показанный ниже тест, которому предоставляются разные слагаемые и ожидаемый результат:

[Theory]

[InlineData(3,2,5)]

[InlineData(1,-1,0)]

public void SimpleTheoryTest(int addend1, int addend2, int expectedResult)

{

  Assert.Equal(expectedResult,addend1+addend2);

}

На заметку! За дополнительными сведениями об инфраструктуре тестирования xUnit обращайтесь в документацию по ссылке

https://xunit.net/
.

Выполнение тестов

Хотя тесты xUnit можно запускать из командной строки (с применением

dotnet test
), разработчикам лучше использовать для этого Visual Studio. Выберите в меню Test (Тестирование) пункт Test Explorer (Проводник тестов), чтобы получить возможность прогонять и отлаживать все или выбранные тесты.

Запрашивание базы данных

Вспомните, что создание экземпляров сущностей из базы данных обычно предусматривает выполнение оператора LINQ в отношении свойств

DbSet<T>
. Поставщик баз данных и механизм трансляции LINQ преобразуют операторы LINQ в запросы SQL, с помощью которых из базы данных читаются соответствующие данные. Данные можно также загружать посредством метода
FromSqlRaw()
или
FromSqlInterpolated()
с применением низкоуровневых запросов SQL. Сущности, загружаемые в коллекции
DbSet<T>
, по умолчанию добавляются в
ChangeTracker
, но отслеживание можно отключать. Данные, загружаемые в коллекции
DbSet<T>
без ключей, никогда не отслеживаются.

Если связанные сущности уже загружены в

DbSet<T>
, тогда EF Core будет связывать новые экземпляры по навигационным свойствам. Например, если сущности
Car
загружаются в коллекцию
DbSet<Car>
и затем связанные сущности
Order
загружаются в коллекцию
DbSet<Order>
того же самого экземпляра
ApplicationDbContext
, то навигационное свойство
Car.Orders
будет возвращать связанные сущности без повторного запрашивания базы данных.

Многие демонстрируемые здесь методы имеют асинхронные версии. Синтаксис запросов LINQ структурно одинаков, поэтому будут использоваться только синхронные версии.

Состояние сущности

Когда сущность создается за счет чтения данных из базы, значение

EntityState
устанавливается в
Unchanged
.

Запросы LINQ

Тип коллекции

DbSet<T>
реализует (помимо прочих) интерфейс
IQueryable<T>
, что позволяет применять команды LINQ языка C# для создания запросов, извлекающих информацию из базы данных. Наряду с тем, что все операторы LINQ языка C# доступны для использования с типом коллекции
DbSet<T>
, некоторые операторы LINQ могут не поддерживаться поставщиком баз данных, а в EF Core появились дополнительные операторы LINQ. Неподдерживаемый оператор LINQ, который невозможно транслировать в язык запросов поставщика баз данных, приведет к генерации исключения времени выполнения, если только он не является последним в цепочке операторов LINQ. Когда неподдерживаемый оператор LINQ находится в самом конце цепочки LINQ, он выполнится на клиентской стороне (в коде С#).

На заметку! Настоящая книга не задумывалась как полный справочник по LINQ, так что в ней приводится не особо много примеров. С дополнительными примерами запросов LINQ можно ознакомиться по ссылке

https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
.

Выполнение запросов LINQ

Вспомните, что при использовании LINQ для запрашивания из базы данных списка сущностей запрос не выполняется до тех пор, пока не начнется проход по результатам запроса, пока запрос не будет преобразован в

List<T>
(или объект) либо же пока не произойдет привязка запроса к списковому элементу управления (вроде сетки данных). Запрос единственной записи выполняется немедленно в случае применения вызова
First()
,
Single()
и т.д.

Нововведением версии EF Core 5 стало то, что в большинстве запросов LINQ можно вызывать метод

ToQueryString()
для исследования запроса, который выполняется в отношении базы данных. Для разделяемых запросов метод
ToQueryString()
возвращает только первый запрос, который будет выполняться. В рассматриваемых далее тестах это значение по возможности присваивается переменной (
qs
), чтобы вы могли изучить запрос во время отладки тестов.

Первый набор тестов (если только специально не указано иначе) находится в файле класса

CustomerTests.cs
.

Получение всех записей

Чтобы получить все записи из таблицы, просто используйте свойство

DbSet<T>
на прямую без каких-либо операторов LINQ. Добавьте приведенный ниже тест
[Fact]
:

[Fact]

public void ShouldGetAllOfTheCustomers()

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

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.


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

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


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

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

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


Прокомментировать
Подтвердите что вы не робот:*