Измените интерфейс на public и реализуйте IRepo, как показано ниже:

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICarRepo : IRepo

  {

    IEnumerable GetAllBy(int makeId);

    string GetPetName(int id);

  }

}

<p id="AutBody_Root997"><strong>Интерфейс хранилища данных о кредитных рисках</strong></p>

Откройте файл ICreditRiskRepo.cs. Интерфейс ICreditRiskRep не добавляет никакой функциональности сверх той, что предоставляется в BaseRepo. Обновите код следующим образом:

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICreditRiskRepo : IRepo

  {

  }

}

<p id="AutBody_Root998"><strong>Интерфейс хранилища данных о заказчиках</strong></p>

Откройте файл ICustomerRepo.cs. Интерфейс ICustomerRepo не добавляет никакой функциональности сверх той, что предоставляется в BaseRepo. Приведите код к такому виду:

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICustomerRepo : IRepo

  {

  }

}

<p id="AutBody_Root999"><strong>Интерфейс хранилища данных о производителях</strong></p>

Откройте файл IMakeRepo.cs. Интерфейс IMakeRepo не добавляет никакой функциональности сверх той, что предоставляется в BaseRepo. Обновите код, как показано ниже:

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface IMakeRepo : IRepo

  {

  }

}

<p id="AutBody_Root1000"><strong>Интерфейс хранилища данных о заказах</strong></p>

Откройте файл 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:

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface IOrderRepo : IRepo

  {

    IQueryable GetOrdersViewModel;

  }

}

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

<p id="AutBody_Root1001"><strong>Реализация классов хранилищ, специфичных для сущностей</strong></p>

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

CarRepo.cs

CreditRiskRepo.cs

CustomerRepo.cs

MakeRepo.cs

OrderRepo.cs

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

<p id="AutBody_Root1002"><strong>Хранилище данных об автомобилях</strong></p>

Откройте файл класса 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 и реализуйте ICarRepo:

namespace AutoLot.Dal.Repos

{

  public class CarRepo : BaseRepo, ICarRepo

  {

  }

}

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

public CarRepo(ApplicationDbContext context) : base(context)

{

}

internal CarRepo(DbContextOptions options)

  : base(options)

{

}

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

public override IEnumerable GetAll

  => Table

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

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