Именно так, изучив проблему дальше, я пришел к следующему выводу и подумал, что я должен был документировать здесь, чтобы помочь другим или чтобы я мог быть исправлен, если мои выводы ошибочны.
DbContext - это Единица работы. Мне нужно только передать эту единицу работы в реализованные классы EFRepository. Для этого не нужно заходить в Сервисные классы. Так как же класс Service вызывает context.SaveChanges () для обеспечения координации всех связанных изменений, когда у него нет экземпляра DbContext? Ну, он вызывает EFRepository.Save (), который выглядит следующим образом:
public void Save()
{
context.SaveChanges();
}
При таком подходе классы обслуживания зависят только от хранилищ. Это будет понятно и может быть осмеяно для тестирования. Когда Unity внедряет требуемые объекты Репозитория в Сервис, он может предоставить каждому Репозиторию одинаковый DbContext. Кроме того, только репозитории имеют доступ к DbContext.
Все это может быть очевидным, но это поставило меня в тупик. Или это может быть просто неправильно, в этом случае, пожалуйста, дайте мне знать!
Джеймс