Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
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;}Есть еще один метод удаления, который не следует этому шаблону. Для выдачи операции удаления он использует
EntityStatepublic 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>ReposAutoLot.DalInterfacesICarRepo.csICreditRiskRepo.csICustomerRepo.csIMakelRepo.csIOrderRepo.csСодержимое интерфейсов будет представлено в последующих разделах.
Интерфейс хранилища данных об автомобилях
Откройте файл
ICarRepo.csusingusing System.Collections.Generic;using AutoLot.Models.Entities;using AutoLot.Dal.Repos.Base;Измените интерфейс на
publicIRepo<Car>namespace AutoLot.Dal.Repos.Interfaces{ public interface ICarRepo : IRepo<Car> { IEnumerable<Car> GetAllBy(int makeId); string GetPetName(int id); }}Интерфейс хранилища данных о кредитных рисках
Откройте файл
ICreditRiskRepo.csICreditRiskRepBaseRepousing AutoLot.Models.Entities;using AutoLot.Dal.Repos.Base;namespace AutoLot.Dal.Repos.Interfaces{ public interface ICreditRiskRepo : IRepo<CreditRisk> { }}Интерфейс хранилища данных о заказчиках
Откройте файл
ICustomerRepo.csICustomerRepoBaseRepousing AutoLot.Models.Entities;using AutoLot.Dal.Repos.Base;namespace AutoLot.Dal.Repos.Interfaces{ public interface ICustomerRepo : IRepo<Customer> { }}Интерфейс хранилища данных о производителях
Откройте файл
IMakeRepo.csIMakeRepoBaseRepo