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

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

Читать онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
1 ... 443 444 445 446 447 448 449 450 451 ... 642
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

public virtual int Add(T entity, bool persist = true)

{

  Table.Add(entity);

  return persist ? SaveChanges() : 0;

}

public virtual int AddRange(IEnumerable<T> entities, bool persist = true)

{

  Table.AddRange(entities);

  return persist ? SaveChanges() : 0;

}

public virtual int Update(T entity, bool persist = true)

{

  Table.Update(entity);

  return persist ? SaveChanges() : 0;

}

public virtual int UpdateRange(IEnumerable<T> entities, bool persist = true)

{

  Table.UpdateRange(entities);

  return persist ? SaveChanges() : 0;

}

public virtual int Delete(T entity, bool persist = true)

{

  Table.Remove(entity);

  return persist ? SaveChanges() : 0;

}

public virtual int DeleteRange(IEnumerable<T> entities, bool persist = true)

{

  Table.RemoveRange(entities);

  return persist ? SaveChanges() : 0;

}

Есть еще один метод удаления, который не следует этому шаблону. Для выдачи операции удаления он использует EntityState, что часто происходит при работе с ASP.NET Core с целью сокращения сетевого трафика:

public int Delete(int id, byte[] timeStamp, bool persist = true)

{

  var entity = new T {Id = id, TimeStamp = timeStamp};

  Context.Entry(entity).State = EntityState.Deleted;

  return persist ? SaveChanges() : 0;

}

Итак, класс BaseRepo завершен, и можно приступать к построению хранилищ, специфичных для сущностей.

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

Каждая сущность будет иметь строго типизированное хранилище, производное от BaseRepo<T>, и интерфейс, который реализует IRepo<T>. Создайте в каталоге Repos проекта AutoLot.Dal новый каталог по имени Interfaces и добавьте в него пять файлов интерфейсов:

ICarRepo.cs

ICreditRiskRepo.cs

ICustomerRepo.cs

IMakelRepo.cs

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

IOrderRepo.cs

Содержимое интерфейсов будет представлено в последующих разделах.

Интерфейс хранилища данных об автомобилях

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

using System.Collections.Generic;

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

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

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICarRepo : IRepo<Car>

  {

    IEnumerable<Car> GetAllBy(int makeId);

    string GetPetName(int id);

  }

}

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

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

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICreditRiskRepo : IRepo<CreditRisk>

  {

  }

}

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

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

using AutoLot.Models.Entities;

using AutoLot.Dal.Repos.Base;

namespace AutoLot.Dal.Repos.Interfaces

{

  public interface ICustomerRepo : IRepo<Customer>

  {

  }

}

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

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

1 ... 443 444 445 446 447 448 449 450 451 ... 642
Перейти на страницу:
Отывы о книге
Открыть боковую панель
Комментарии
Ксения
Ксения 25.01.2025 - 12:30
Неплохая подборка книг. Прочитаю все однозначно.
Jonna
Jonna 02.01.2025 - 01:03
Страстно🔥 очень страстно
Ксения
Ксения 20.12.2024 - 00:16
Через чур правильный герой. Поэтому и остался один
Настя
Настя 08.12.2024 - 03:18
Прочла с удовольствием. Необычный сюжет с замечательной концовкой
Марина
Марина 08.12.2024 - 02:13
Не могу понять, где продолжение... Очень интересная история, хочется прочесть далее