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

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 227
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

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

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

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

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

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

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

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface IMakeRepo : IRepo<Make>

  {

  }

}

Интерфейс хранилища данных о заказах

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

using System.Collections.Generic;

using System.Linq;

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

using AutoLot.Models.ViewModels;

Измените интерфейс на public и реализуйте IRepo<Order>:

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface IOrderRepo : IRepo<Order>

  {

    IQueryable<CustomerOrderViewModel> GetOrdersViewModel();

  }

}

Интерфейс на этом завершен, т.к. все необходимые конечные точки API раскрыты в базовом классе.

Реализация классов хранилищ, специфичных для сущностей

Большую часть своей функциональности реализуемые классы хранилищ получают от базового класса. Далее будут описаны функциональные средства, которые добавляются или переопределяют возможности, предлагаемые базовым классом хранилища. Создайте в каталоге Repos проекта AutoLot.Dal пять новых файлов классов хранилищ:

CarRepo.cs

CreditRiskRepo.cs

CustomerRepo.cs

MakeRepo.cs

OrderRepo.cs

Классы хранилищ будут реализованы в последующих разделах.

Хранилище данных об автомобилях

Откройте файл класса CarRepo.cs и поместите в его начало показанные ниже операторы using:

using System.Collections.Generic;

using System.Data;

using System.Linq;

using AutoLot.Dal.EfStructures;

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.Data.SqlClient;

using Microsoft.EntityFrameworkCore;

Измените класс на public, унаследуйте его от BaseRepo<Car> и реализуйте ICarRepo:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

namespace AutoLot.Dal.Repos

{

  <b>public</b> class CarRepo : <b>BaseRepo&lt;Car&gt;, ICarRepo</b>

  {

  }

}

Каждый класс хранилища должен реализовывать два конструктора из BaseRepo:

public CarRepo(ApplicationDbContext context) : base(context)

{

}

internal CarRepo(DbContextOptions&lt;ApplicationDbContext&gt; options)

  : base(options)

{

}

Добавьте переопределенные версии методов GetAll() и GetAllIgnoreQueryFilters() для включения свойства MakeNavigation и упорядочения по значению PetName:

public override IEnumerable&lt;Car&gt; GetAll()

  =&gt; Table

            .Include(c =&gt; c.MakeNavigation)

            .OrderBy(o =&gt; o.PetName);

public override IEnumerable&lt;Car&gt; GetAllIgnoreQueryFilters()

  =&gt; Table

            .Include(c =&gt; c.MakeNavigation)

            .OrderBy(o =&gt; o.PetName)

            .IgnoreQueryFilters();

Реализуйте метод GetAllBy(). Перед выполнением он обязан установить фильтр для контекста. Включите навигационное свойство Make и отсортируйте по значению PetName:

public IEnumerable&lt;Car&gt; GetAllBy(int makeId)

{

  return Table

    .Where(x =&gt; x.MakeId == makeId)

    .Include(c =&gt; c.MakeNavigation)

    .OrderBy(c =&gt; c.PetName);

}

Добавьте переопределенную версию Find(), в которой включается свойство MakeNavigation, а фильтры запросов игнорируются:

public override Car? Find(int? id)

  =&gt; Table

Перейти на страницу:
Комментариев (0)