Table.Update(entity);
return persist ? SaveChanges() : 0;
}
public virtual int UpdateRange(IEnumerable
{
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
{
Table.RemoveRange(entities);
return persist ? SaveChanges() : 0;
}
Есть еще один метод удаления, который не следует этому шаблону. Для выдачи операции удаления он использует EntityState
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
IRepo. Создайте в каталоге Repos проекта AutoLot.Dal новый каталог по имени Interfaces и добавьте в него пять файлов интерфейсов:ICarRepo.cs
ICreditRiskRepo.cs
ICustomerRepo.cs
IMakelRepo.cs
IOrderRepo.cs
Содержимое интерфейсов будет представлено в последующих разделах.
Интерфейс хранилища данных об автомобилях
Откройте файл ICarRepo.cs
using:using System.Collections.Generic;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Base;
Измените интерфейс на public
IRepo, как показано ниже:namespace AutoLot.Dal.Repos.Interfaces
{
public interface ICarRepo : IRepo
{
IEnumerable
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
{
}
}
Интерфейс хранилища данных о заказчиках
Откройте файл ICustomerRepo.cs
ICustomerRepo не добавляет никакой функциональности сверх той, что предоставляется в BaseRepo. Приведите код к такому виду:using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Base;
namespace AutoLot.Dal.Repos.Interfaces
{
public interface ICustomerRepo : IRepo
{
}
}
Интерфейс хранилища данных о производителях
Откройте файл IMakeRepo.cs
IMakeRepo не добавляет никакой функциональности сверх той, что предоставляется в BaseRepo. Обновите код, как показано ниже:using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Base;
namespace AutoLot.Dal.Repos.Interfaces
{
public interface IMakeRepo : IRepo
{
}
}
Интерфейс хранилища данных о заказах
Откройте файл IOrderRepo.cs
using:using System.Collections.Generic;
using System.Linq;
using AutoLot.Models.Entities;
using AutoLot.Dal.Repos.Base;