Понятия не имею, правильно ли я это делаю, но вот как выглядит метод Get
в моем хранилище:
public IQueryable<User> GetUsers(IEnumerable<Expression<Func<User, object>>> eagerLoading)
{
IQueryable<User> query = db.Users.AsNoTracking();
if (eagerLoading != null)
{
foreach (var expression in eagerLoading)
{
query = query.Include(expression);
}
}
return query;
}
Допустим, у меня также есть GeographyRepository
, в котором есть GetCountries
метод, который похож на это.
У меня есть 2 отдельных класса уровня обслуживания, вызывающих эти 2 отдельных репозитория, совместно использующих один и тот же DbContext (код EF 4.1 в первую очередь).контроллер, я бы сделал:
myViewModel.User = userService.GetUserById(1);
myViewModel.Countries = geoService.GetCountries();
Это 2 отдельных вызова базы данных.Если бы я не использовал эти шаблоны и связал интерфейс и базу данных, у меня был бы 1 звонок.Я предполагаю, что это что-то вроде производительности по сравнению с ремонтопригодностью.
Мой вопрос: можно ли это перевести на 1 вызов базы данных?Можем ли мы объединить такие запросы, когда views вызывают несколько репозиториев?