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

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

exec sp_executesql N'SELECT COUNT(*)

FROM [dbo].[Inventory] AS [i]

WHERE ([i].[IsDrivable] = CAST(1 AS bit)) AND ([i].[MakeId] = @__makeId_0)'

,N'@__makeId_0 int',@__makeId_0=6

Any() и All()

Методы

Any()
и
All()
проверяют набор записей, чтобы выяснить, соответствует ли критериям любая запись (
Any()
) или же все записи (
Аll()
). Как и вызовы методов агрегирования, их можно добавлять в конец запроса LINQ с вызовами
Where()
либо же помещать выражение фильтрации в сам вызов метода. Методы
Any()
и
All()
выполняются на серверной стороне, а из запроса возвращается булевское значение. Глобальные фильтры запросов оказывают воздействие на методы
Any()
и
All()
; их можно отключить с помощью
IgnoreQueryFilters()
.

Все операторы SQL, показанные в этом разделе, были получены с применением профилировщика SQL Server. Первый тест (из

CarTests.cs
) проверяет, имеет ли любая запись Car специфическое значение
MakeId
:

[Theory]

[InlineData(1, true)]

[InlineData(11, false)]

public void ShouldCheckForAnyCarsWithMake(int makeId, bool expectedResult)

{

  var result = Context.Cars.Any(x => x.MakeId == makeId);

  Assert.Equal(expectedResult, result);

}

Для первого теста

[Theory]
выполняется следующий код SQL:

exec sp_executesql N'SELECT CASE

  WHEN EXISTS (

    SELECT 1

    FROM [dbo].[Inventory] AS [i]

    WHERE ([i].[IsDrivable] = CAST(1 AS bit))

      AND ([i].[MakeId] = @__makeId_0)) THEN

    CAST(1 AS bit)

   ELSE CAST(0 AS bit)

END',N'@__makeId_0 int',@__makeId_0=1

Второй тест проверяет, имеют ли все записи

Car
специфическое значение
MakeId
:

[Theory]

[InlineData(1, false)]

[InlineData(11, false)]

public void ShouldCheckForAllCarsWithMake(int makeId, bool expectedResult)

{

  var result = Context.Cars.All(x => x.MakeId == makeId);

  Assert.Equal(expectedResult, result);

}

Вот код SQL, выполняемый для второго теста

[Theory]
:

exec sp_executesql N'SELECT CASE

  WHEN NOT EXISTS (

    SELECT 1

    FROM [dbo].[Inventory] AS [i]

    WHERE ([i].[IsDrivable] = CAST(1 AS bit))

      AND ([i].[MakeId] <> @__makeId_0)) THEN

    CAST(1 AS bit)

  ELSE CAST(0 AS bit)

END',N'@__makeId_0 int',@__makeId_0=1

Получение данных из хранимых процедур

Последний шаблон извлечения данных, который необходимо изучить, предусматривает получение данных из хранимых процедур. Несмотря на некоторые пробелы EF Core в плане работы с хранимыми процедурами (по сравнению с EF 6), не забывайте, что инфраструктура EF Core построена поверх ADO.NET. Нужно просто спуститься на уровень ниже и вспомнить, как вызывались хранимые процедуры до появления инструментов объектно-реляционного отображения. Показанный далее метод в

CarRepo
создает обязательные параметры (входной и выходной), задействует свойство
Database
экземпляра
ApplicationDbContext
и вызывает
ExecuteSqlRaw()
:

public string GetPetName(int id)

{

  var parameterId = new SqlParameter

    {

    ParameterName = "@carId",

    SqlDbType = System.Data.SqlDbType.Int,

    Value = id,

  };

  var parameterName = new SqlParameter

  {

    ParameterName = "@petName",

    SqlDbType = System.Data.SqlDbType.NVarChar,

    Size = 50,

    Direction = ParameterDirection.Output

  };

  var result = Context.Database

    .ExecuteSqlRaw("EXEC [dbo].[GetPetName] @carId, @petName OUTPUT",

                    parameterId,
parameterName);

  return (string)parameterName.Value;

}

При наличии такого кода тест становится тривиальным. Добавьте в файл класса

CarTests.cs
следующий тест:

[Theory]

[InlineData(1, "Zippy")]

[InlineData(2, "Rusty")]

[InlineData(3, "Mel")]

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

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

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

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


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

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

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


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