@embiid

В каком репозиторией должна быть логика?

Есть две таблицы: Account, Transaction.
У табл. тразакций есть внешний ключ, который отсылается к аккаунту.
Хочу вывести n-последних транзакций с определенного аккаунта:
public async Task<IList<Operation>> GetLatestOperations(int id)
{
	int latestOperations = 10;

	return await _context.Set<Operation>()
		.Where(acc => acc.AccountId == id)
		.OrderBy(o => o.DateTimeOffset)
		.Take(latestOperations)
		.ToListAsync();
}


Теперь настиг такой вопрос => а где должна быть эта функция вывода операций? Должен ли быть это Account репозиторий или же Operation?

Я хочу выводить информацию в контроллере Accout, но меня беспокоит что в этом контроллере будет инжекатся и аккаунт сервис, и сервий операций.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Между слоями Repository и Controller у тебя д.б. слой Service.
Repository абстрагирует базу данных, т.е. занимается преобразованием объект_языка  <--> запись_БД. Благодаря этому, все остальные классы оперируют привычными им объектами, не заботясь об из происхождении: база данных, очередь, аппарат Луна-25 :)
Controller обслуживает HTTP-точки - принимает запросы и выдаёт готовые ответы.
А Service как раз занимается "бизнес-логикой", получая запросы от контроллера, запрашивая данные у репозитория, преобразуя их в готовый ответ и отправляя его обратно контроллеру. Сервис может подключить себе несколько репозиториев если ему требуются данные из нескольких источников, таблиц и пр.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы