Я вижу, как некоторые люди создают пустой интерфейс для 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);
я использую
AspNet.Mvc 5.2.6
Unity.Mvc 5.0.15
Unity.Container 5.8.10
Найдите «Шаг 4 - Зарегистрируйте зависимость в файле UnityConfig.cs» в связанной документации. Если вы внимательно проследите за ним, метод RegisterComponents будет существовать.
Что касается вашего другого вопроса: настройка единства mvc и регистрация контекстов EF в любой структуре преобразователя зависимостей - это очень разные вещи. Вот почему я голосую за закрытие как за широкое.
@ mbharanidharan88 AspNet.Mvc 5.2.6, Unity.Mvc 5.0.15
Дело не в Unity. Речь идет о внедрении зависимостей в целом. Когда вы регистрируете тип службы любой через интерфейс, легко протестировать ваш код с помощью фиктивной службы или фиктивного объекта, который должен только реализовать этот интерфейс. Конечно, это означает, что IEasyDayContext должен быть пустым.
Ссылка нет указывает на Unity, только на пример трехлетней давности. Вы найдете Контейнер Unity на Github. Сама Unity - это доступный через NuGet, а текущая версия - 5.8.11.
@ grek40 UnityConfig и метод RegisterComponents () создается Unity. Сегодня при установке unity единственный метод в классе - RegisterTypes ().
@PanagiotisKanavos Да, я в курсе. У меня 5.8.10 установлен через NuGet. Документация на GitHub не очень помогает мне понять, как ее правильно использовать.
@AsgerVestbjerg что ты пробовал? образец трехлетней давности о совершенно не связанной версии вам не поможет - Unity.Container был полностью переделан.
@AsgerVestbjerg использование интерфейсов такое же, как и для контейнера DI каждый. Интерфейсы используются, поэтому потребители не зависят от конкретной реализации этого интерфейса, что упрощает тестирование. Интерфейс пустой в этом не помогает. Регистрация как DbContext бессмысленна и, скорее всего, является признаком ошибки - кто бы это ни сделал, ему пришлось бы В ролях внедренного параметра DbContext в фактический параметр.
@AsgerVestbjerg вы проверяли репозиторий Примеры?





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