.Include(c => c.MakeNavigation)

            .OrderBy(o => o.PetName);

public override IEnumerable GetAllIgnoreQueryFilters

  => Table

            .Include(c => c.MakeNavigation)

            .OrderBy(o => o.PetName)

            .IgnoreQueryFilters;

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

public IEnumerable GetAllBy(int makeId)

{

  return Table

    .Where(x => x.MakeId == makeId)

    .Include(c => c.MakeNavigation)

    .OrderBy(c => c.PetName);

}

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

public override Car? Find(int? id)

  => Table

        .IgnoreQueryFilters

        .Where(x => x.Id == id)

        .Include(m => m.MakeNavigation)

        .FirstOrDefault;

Добавьте метод, который позволяет получить значение PetName, используя хранимую процедуру:

public string GetPetName(int id)

{

  var parameterId = new SqlParameter

  {

    ParameterName = "@carId",

    SqlDbType = SqlDbType.Int,

    Value = id,

  };

   var parameterName = new SqlParameter

  {

    ParameterName = "@petName",

    SqlDbType = SqlDbType.NVarChar,

    Size = 50,

    Direction = ParameterDirection.Output

  };

  _ = Context.Database

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

     parameterId, parameterName);

  return (string)parameterName.Value;

}

<p id="AutBody_Root1003"><strong>Хранилище данных о кредитных рисках</strong></p>

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

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Models.Entities;

using AutoLot.Dal.Repos.Base;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.EntityFrameworkCore;

Измените класс на public, унаследуйте его от BaseRepo, реализуйте ICreditRiskRepo и добавьте два обязательных конструктора:

namespace AutoLot.Dal.Repos

{

  public class CreditRiskRepo : BaseRepo, ICreditRiskRepo

  {

    public CreditRiskRepo(ApplicationDbContext context) : base(context)

    {

    }

    internal CreditRiskRepo(

      DbContextOptions options)

    : base(options)

    {

    }

  }

}

<p id="AutBody_Root1004"><strong>Хранилище данных о заказчиках</strong></p>

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

using System.Collections.Generic;

using System.Linq;

using AutoLot.Dal.EfStructures;

using AutoLot.Dal.Models.Entities;

using AutoLot.Dal.Repos.Base;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.EntityFrameworkCore;

Измените класс на public, унаследуйте его от BaseRepo, реализуйте ICustomerRepo и добавьте два обязательных конструктора:

namespace AutoLot.Dal.Repos

{

  public class CustomerRepo : BaseRepo, ICustomerRepo

  {

    public CustomerRepo(ApplicationDbContext context)

      : base(context)

    {

    }

    internal CustomerRepo(

      DbContextOptions options)

      : base(options)

    {

    }

  }

}

Наконец, добавьте метод, который возвращает все записи Customer с их заказами, отсортированные по значениям LastName:

public override IEnumerable GetAll

  => Table

      .Include(c => c.Orders)

      .OrderBy(o => o.PersonalInformation.LastName);

<p id="AutBody_Root1005"><strong>Хранилище данных о производителях</strong></p>

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

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

Похожие книги