Не будучи слишком самонадеянным, я хотел бы ответить на свой собственный вопрос, основанный на ветке комментариев.
Общий шаблон репозитория c является пережитком со времен, предшествовавших эре Object- Реляционные картографы (ORM), такие как Entity Framework, xHibernate, Dapper, PetaPoco и миллионы других.
С появлением ORM все функции, обнаруженные в шаблоне репозитория, инкапсулированы в самом ORM.
Например, Entity Framework по умолчанию использует Transaction / UnitOfWork каждый раз, когда вы вызываете .SaveChanges()
для DbContext.
Он также автоматически отслеживает изменения, внесенные в сущности, возвращенные запросом, если вы не явно скажите это не с UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
.
Что касается Generi c Репозитории, как вы думаете, следующий код:
MyDbContext.Set<WeatherForecast>().Add(forecast);