В Asp.Net MVC шаблон по умолчанию поставляется с классом запуска в Startup.Auth.cs
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
Согласно комментарию в этом шаблоне, экземпляр ApplicationDbContext создается для запроса.
В моем приложении я использую шаблон репозитория и вставляю ApplicationDbContext в репозитории. В моем случае я использую Ninject, который при необходимости может использовать один и тот же контекст для нескольких репозиториев.
Есть ли способ использовать тот же введенный ApplicationDbContext в Startup.Auth ? Не совсем уверен, что это хорошая идея изменить шаблон по умолчанию, в то же время мы создаем 2 экземпляра одного и того же контекста в одном запросе ...
В моем коде Ninject я привязываю ApplicationDbContext к себе, как показано ниже:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ApplicationDbContext>().ToSelf().InRequestScope();
Не совсем уверен, что это плохая практика - привязывать контекст к себе вместо создания интерфейса? (хотя работает нормально).