Я работаю с последним ASP.Net Core RC2, веб-API, ориентированным только на Windows. Рамка 4.6.1.Инъекция зависимостей и область действия?
Я смущен относительно роли стандартного шаблона репозитория в сравнении с тем, как Core обрабатывает инъекцию зависимостей контроллера. Я просто хочу убедиться, что это правильный подход по-прежнему, так как документации там не так много (или это будет противоречить).
Теперь у меня есть эта настройка, у меня есть стандартный интерфейс репозитория для операций CRUD и связанный с ними класс, который реализует эти операции.
Я закачиваю репозиторий в контроллер. Эти два шага я взял являются (в Startup.cs
, ConfigureServices()
):
services.AddSingleton<IMyCustomRepository, MyCustomRepository>();
Мой контроллер затем принимает в хранилище:
public MyCustomController(IMyCustomRepository repository) { }
Моя конечная цель, чтобы получить EF Сердечник здесь, в том числе InMemoryProvider.
Правильно ли это построено? Одна из моих основных проблем заключается в том, что я постоянно читаю о том, как шаблоны репозитория не нужны при использовании ORM, таких как Entity Framework, но я не уверен, как это относится к EF Core.
Я читал, что вы не должны использовать AddSingleton здесь, если используете EF Core, потому что это зависит от DbContext, который является областью действия (так что вы должны использовать это вместо этого)?
Спасибо. Где находится «MyDbContext» в режиме реального времени с шаблоном репозитория? Я видел примеры по всей карте. Я специально хочу знать о Core RC2. Предполагается ли это, что он должен быть введен в репозиторий и сохранен как член? Я также видел, что он был включен в 'using()' блоки по требованию. – Patrick
@Patrick: вы не должны использовать блоки 'using' в веб-приложении с контейнером зависимостей/контейнера IoC, поскольку контейнер будет удален после выхода из блока' using', и все последующие его доступ к нему в течение одного и того же запроса не удастся с исключением. ASP.NET Core позаботится об утилизации после завершения запроса (при условии, что вы зарегистрировали его с ограниченным сроком службы) – Tseng
@Tseng Согласовано. Должен ли DbContext вводиться в репозиторий через конструктор в этой настройке и храниться как член? – Patrick