Как лучше всего использовать Unity Mvc и Entity Framework?

  • Как лучше всего создать экземпляр DbContext?

Я вижу, как некоторые люди создают пустой интерфейс для DbContext следующим образом:

public interface IEasyDayContext : IDisposable { }

а затем зарегистрируйте его в Unity вот так (UnityConfig.cs):

container.RegisterType<IEasyDayContext, EasyDayContext>();

Я вижу, как другие используют DbContext как «интерфейс»:

container.RegisterType<DbContext, EasyDayContext>();

Я вижу, как другие люди просто создают экземпляр DbContext в конструкторе службы.

  • Мне сложно получить обновленную документацию по Unity Mvc, стоит ли мне ее использовать сегодня?

  • Как мне настроить Unity Mvc?

Текущая документация (от https://code.msdn.microsoft.com/Dependency-Injection-in-11d54863) предлагает мне поместить эту строку кода в мой файл Global.asax.cs:

UnityConfig.RegisterComponents(); 

Однако этого метода больше не существует. Должен ли я использовать это вместо этого?

UnityConfig.RegisterTypes(UnityConfig.Container);
  • Стоит ли использовать PerRequestLifetimeManager?

я использую

AspNet.Mvc 5.2.6
Unity.Mvc 5.0.15
Unity.Container 5.8.10

Какую версию MVC вы используете?

Hary 14.11.2018 15:33

Найдите «Шаг 4 - Зарегистрируйте зависимость в файле UnityConfig.cs» в связанной документации. Если вы внимательно проследите за ним, метод RegisterComponents будет существовать.

grek40 14.11.2018 18:07

Что касается вашего другого вопроса: настройка единства mvc и регистрация контекстов EF в любой структуре преобразователя зависимостей - это очень разные вещи. Вот почему я голосую за закрытие как за широкое.

grek40 14.11.2018 18:09

@ mbharanidharan88 AspNet.Mvc 5.2.6, Unity.Mvc 5.0.15

Asger Vestbjerg 15.11.2018 10:15

Дело не в Unity. Речь идет о внедрении зависимостей в целом. Когда вы регистрируете тип службы любой через интерфейс, легко протестировать ваш код с помощью фиктивной службы или фиктивного объекта, который должен только реализовать этот интерфейс. Конечно, это означает, что IEasyDayContext должен быть пустым.

Panagiotis Kanavos 15.11.2018 10:21

Ссылка нет указывает на Unity, только на пример трехлетней давности. Вы найдете Контейнер Unity на Github. Сама Unity - это доступный через NuGet, а текущая версия - 5.8.11.

Panagiotis Kanavos 15.11.2018 10:23

@ grek40 UnityConfig и метод RegisterComponents () создается Unity. Сегодня при установке unity единственный метод в классе - RegisterTypes ().

Asger Vestbjerg 15.11.2018 10:26

@PanagiotisKanavos Да, я в курсе. У меня 5.8.10 установлен через NuGet. Документация на GitHub не очень помогает мне понять, как ее правильно использовать.

Asger Vestbjerg 15.11.2018 10:28

@AsgerVestbjerg что ты пробовал? образец трехлетней давности о совершенно не связанной версии вам не поможет - Unity.Container был полностью переделан.

Panagiotis Kanavos 15.11.2018 10:29

@AsgerVestbjerg использование интерфейсов такое же, как и для контейнера DI каждый. Интерфейсы используются, поэтому потребители не зависят от конкретной реализации этого интерфейса, что упрощает тестирование. Интерфейс пустой в этом не помогает. Регистрация как DbContext бессмысленна и, скорее всего, является признаком ошибки - кто бы это ни сделал, ему пришлось бы В ролях внедренного параметра DbContext в фактический параметр.

Panagiotis Kanavos 15.11.2018 10:31

@AsgerVestbjerg вы проверяли репозиторий Примеры?

Panagiotis Kanavos 15.11.2018 10:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
11
225
0

Другие вопросы по теме