Итак, я пишу программу и получаю данные, используя EF 6.
В принципе, я думаю, что самый простой подход - это один класс:
public class DataRetriever
{
public List<TEntity> GetAll<TEntity>() where TEntity : class
{
using (var Db = new Entity())
{
return Db.Set<TEntity>().ToList();
}
}
}
Итак, вы начинаете создавать другие классы на основе указания, какие данные вы хотите собирать. Скажем, у меня есть список карнавальных аттракционов, и один из способов - получить одну поездку или что-то в этом роде. ТАК тогда у меня будет следующее:
public class SelectedRide
{
int RideId { get; set; }
string RideName { get; set; }
string DomValue { get; set; }
public SelectedRide(DataRetriever Retriever)
{
var Records = Retriever.GetAll<vwRideList>();
var Record = from x in Records
where x.RideId == RideId
select x;
RideName = Record.Single().RideName;
DomValue = Record.Single().DomValue;
}
}
Идентификатор поездки является личностью.
Таким образом, можно было бы сказать, что если бы другой класс, например, скажем, у нас было несколько парков, где проходили поездки, мог бы быть public class SelectedPark
, он имел бы ту же логику, но в Retriever.GetAll<vwParkList>();
список поездок теперь является списком парков. И так далее.
Я не могу сказать, быстро ли это выйдет из-под контроля, если я скажу, что было 50 отдельных типов поиска, которые нужно было сделать. Конечно, я не буду знать, поскольку я знаю общий объем этой программы, но ЧТО, ЕСЛИ.
Я тоже видел такие вещи, как модель репо, но я не могу сказать, является ли это пустой тратой времени или нет. Я не могу сказать, что я получаю от этого. Похоже, это было достаточно общим, чтобы я не писал контекст в миллионе разных мест.