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 ... 258 259 260 261 262 263 264 265 266 ... 407
    Перейти на страницу:
    объекта команды:

    command.Parameters.Add(paramId);

    command.Parameters.Add(paramName);

    Обновление метода InsertAuto()

    Добавьте следующую версию метода InsertAuto(), чтобы задействовать объекты параметров:

    public void InsertAuto(Car car)

    {

      OpenConnection();

      // Обратите внимание на "заполнители" в запросе SQL.

      string sql = "Insert Into Inventory" +

        "(MakeId, Color, PetName) Values" +

        "(@MakeId, @Color, @PetName)";

      // Эта команда будет иметь внутренние параметры.

      using (SqlCommand command = new SqlCommand(sql, _sqlConnection))

      {

        // Заполнить коллекцию параметров.

        SqlParameter parameter = new SqlParameter

        {

          ParameterName = "@MakeId",

          Value = car.MakeId,

          SqlDbType = SqlDbType.Int,

          Direction = ParameterDirection.Input

        };

        command.Parameters.Add(parameter);

        parameter = new SqlParameter

        {

          ParameterName = "@Color",

          Value = car.Color,

          SqlDbType = SqlDbType. NVarChar,

          Size = 50,

          Direction = ParameterDirection.Input

        };

        command.Parameters.Add(parameter);

        parameter = new SqlParameter

        {

          ParameterName = "@PetName",

          Value = car.PetName,

          SqlDbType = SqlDbType. NVarChar,

          Size = 50,

          Direction = ParameterDirection.Input

        };

        command.Parameters.Add(parameter);

        command.ExecuteNonQuery();

        CloseConnection();

      }

    }

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

    Выполнение хранимой процедуры

    Вспомните, что хранимая процедура представляет собой именованный блок кода SQL, сохраненный в базе данных. Хранимые процедуры можно конструировать так, чтобы они возвращали набор строк либо скалярных типов данных или выполняли еще какие-то осмысленные действия (например, вставку, обновление или удаление записей); в них также можно предусмотреть любое количество необязательных параметров. Конечным результатом будет единица работы, которая ведет себя подобно типичной функции, но только находится в хранилище данных, а не в двоичном бизнес-объекте. В текущий момент в базе данных AutoLot определена единственная хранимая процедура по имени GetPetName.

    Рассмотрим следующий (пока что) финальный метод типа InventoryDal, в котором вызывается хранимая процедура GetPetName:

    public string LookUpPetName(int carId)

    {

      OpenConnection();

      string carPetName;

      // Установить имя хранимой процедуры.

      using (SqlCommand command = new SqlCommand("GetPetName", _sqlConnection))

      {

        command.CommandType = CommandType.StoredProcedure;

        // Входной параметр.

        SqlParameter param = new SqlParameter

        {

          ParameterName = "@carId",

          SqlDbType = SqlDbType.Int,

          Value = carId,

          Direction = ParameterDirection.Input

        };

        command.Parameters.Add(param);

        // Выходной параметр.

        param = new SqlParameter

        {

          ParameterName = "@petName",

          SqlDbType = SqlDbType.NVarChar,

          Size = 50,

          Direction = ParameterDirection.Output

        };

        command.Parameters.Add(param);

        // Выполнить хранимую процедуру.

        command.ExecuteNonQuery();

        // Возвратить выходной параметр.

        carPetName = (string)command.Parameters["@petName"].Value;

        CloseConnection();

      }

      return carPetName;

    }

    С вызовом хранимых процедур связан один важный аспект: объект команды может представлять оператор SQL (по умолчанию) либо имя хранимой процедуры. Когда объекту команды необходимо сообщить о том, что он будет вызывать хранимую процедуру, потребуется указать имя этой процедуры (в аргументе конструктора или в свойстве CommandText) и установить свойство CommandType в CommandType.StoredProcedure. (В противном случае возникнет исключение времени выполнения, т.к. по умолчанию объект команды ожидает оператор SQL.)

    Далее обратите внимание, что свойство Direction параметра @petName установлено в ParameterDirection.Output. Как и ранее, все объекты параметров добавляются в коллекцию параметров объекта команды.

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

    // Возвратить выходной параметр.

    carPetName = (string)command.Parameters["@petName"].Value;

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

    Создание консольного клиентского приложения

    Добавьте к решению AutoLot.Dal новый проект консольного приложения (по имени AutoLot.Client) и ссылку на проект AutoLot.Dal. Ниже приведены соответствующие CLI-команды dotnet (предполагается, что ваше решение называется Chapter21_А11Projects.sin):

    dotnet new console -lang c# -n AutoLot.Client -o .AutoLot.Client -f net5.0

    dotnet sln .Chapter21_AllProjects.sln add .AutoLot.Client

    dotnet add AutoLot.Client package Microsoft.Data.SqlClient

    dotnet add AutoLot.Client reference AutoLot.Dal

    В случае использования Visual Studio щелкните правой кнопкой мыши на имени решения и выберите в контекстном меню пункт AddNew Project (Добавить►Новый проект). Установите новый проект в качестве стартового (щелкнув правой кнопкой мыши на имени проекта в окне Solution Explorer и выбрав в контекстном меню пункт Set as Startup Project (Установить как стартовый проект)). Это обеспечит запуск нового проекта при инициировании отладки в Visual Studio. Если вы применяете Visual Studio Code, тогда перейдите в каталог AutoLot.Test и запустите проект (когда наступит время) с использованием dotnet run.

    Очистите код, сгенерированный в Program.cs, и поместите в начало файла Program.cs следующие операторы using:

    using System;

    using System.Linq;

    using AutoLot.Dal;

    using AutoLot.Dal.Models;

    using AutoLot.Dal.DataOperations;

    using System.Collections.Generic;

    Чтобы задействовать AutoLot.Dal, замените код метода Main() показанным далее кодом:

    InventoryDal dal = new InventoryDal();

    List<CarViewModel> list = dal.GetAllInventory();

    Console.WriteLine(" ************** All Cars ************** ");

    Console.WriteLine("IdtMaketColortPet Name");

    foreach (var itm in list)

    {

      Console.WriteLine($"{itm.Id}t{itm.Make}t{itm.Color}t{itm.PetName}");

    }

    Console.WriteLine();

    CarViewModel car =

      dal.GetCar(list.OrderBy(x=>x.Color).Select(x => x.Id).First());

    Console.WriteLine(" ************** First Car By Color ************** ");

    Console.WriteLine("CarIdtMaketColortPet Name");

    Console.WriteLine($"{car.Id}t{car.Make}t{car.Color}t{car.PetName}");

    try

    {

      // Это потерпит неудачу из-за наличия связанных данных в таблице Orders.

      dal.DeleteCar(5);

      Console.WriteLine("Car deleted."); // Запись об автомобиле удалена.

    1 ... 258 259 260 261 262 263 264 265 266 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

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


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

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

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


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

    Новые отзывы

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