Я пытаюсь узнать, как использовать Injection Dependency для автоматического монтирования в веб-приложении MVC 5. В то время как я нашел учебные пособия «Инъекция зависимостей» и «Единство», примеры, которые я видел, скорее всего приветствуют мировое разнообразие и никогда не сталкиваются с проблемой контекстов базы данных в контроллерах.Инъекция зависимостей DbContext без репозитория
Чтобы дать вам лучший пример того, что я имею в виду, вот фрагмент кода того, что у меня есть и что я пытаюсь сделать.
Когда я использую Visual Studio для автоматической подстройки контроллера «с представлениями, используя Entity Framework», обычно это создается.
public class TideUploadsController : Controller
{
// This is the EF Database context placed by the auto-scaffolder
private AzMeritContext db = new AzMeritContext();
[HttpGet]
public ActionResult Index()
{
return View(db.TideUploads.ToList());
}
/* further CRUD ActionResults not shown */
}
}
Из того, что я читал до сих пор, чтобы использовать Dependency Injection, я должен использовать конструктор, который вызывает интерфейс вместо класса. Я прочитал смешанные обзоры об упаковке репозитория вокруг Entity Framework. Я хотел бы посмотреть, могу ли я сделать это без использования репозитория.
Есть ли уже существующий интерфейс, который я должен использовать вместо DbContext, который помещается в код авто-scaffolder?
// This is the EF Database context placed by the auto-scaffolder
private AzMeritContext db = new AzMeritContext();
public TideUploadsController(/* what Interface goes here? */)
{
//db = ?
}
Или это ситуация, когда мне действительно нужно, чтобы обернуть вокруг хранилища Entity Framework DbContext?
Я провел последние несколько недель, чтение книг и поиск через учебники и видео, и я еще не видел, шаг за шагом пример, который показывает что-то вроде:
- Шаг 1: Возьмите контроллер что вы просто автошлифовали
- Шаг 2: Сделайте это ...
- Шаг n: Теперь ваш контроллер слабо связан с контекстом базы данных, а не с плотно соединенным.
Для всех аргументов для репозиториев один недостаток, который я все еще вижу, - это много дополнительного ввода текста. Хотя я нашел примеры общего интерфейса репозитория, я еще не видел общий репозиторий, чтобы я мог вставить любую конструкторскую пару context & model в конструктор и использовать одни и те же глаголы (get, insert и т. Д.). Есть ли у вас какие-либо идеи относительно действительно общего хранилища? –
, вероятно, вам следует создать «общий репозиторий» и выполнить инъекцию DBContext в конструкторе, эта идея кажется мне удобной http://blog.gauffin.org/2013/01/repository-pattern-done-right/ и as вы говорите, что есть много кода для записи и ввода для переноса любого доступа к базе данных –