Я пытаюсь получить доступ к _context
из внедрения зависимостей, однако получаю сообщение об ошибке:
'Значение не может быть нулевым. Имя параметра: context '
В AdminController.cs
у меня есть следующее:
using Microsoft.AspNet.Identity;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity.EntityFramework;
using System.Threading.Tasks;
namespace GuildCars.UI.Controllers
{
public class AdminController : Controller
{
private readonly ApplicationDbContext _context;
public AdminController(ApplicationDbContext context)
{
_context = context;
}
public AdminController() { }
...
public ActionResult EditUser(string id)
{
var userMgr = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_context)); //fail to get _context.
var appUser = userMgr.FindById(id);
//var appUser = userMgr.FindByEmail(email);
var user = new UserEditViewModel
{
UserID = appUser.Id,
FirstName = appUser.FirstName,
LastName = appUser.LastName,
Email = appUser.Email,
Role = appUser.Role
};
return View(user);
}
Внедрение зависимости, как у меня выше, не работает, однако, если я использую следующий код он работает с оператором using:
using (var ctx = new ApplicationDbContext())
{
ctx.Cars.Add(model.Car);
if (model.Car == null)
model.Car = new Car();
ctx.SaveChanges();
}
Я проверил свой Startup.Auth.cs
, и у меня есть ApplicationDbContext.Create
:
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);
...
Кроме того, я проверил, есть ли у меня метод Create()
в IdentityModels.cs
, и он у меня есть.
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<Car> Cars { get; set; }
public DbSet<Transaction> Transactions { get; set; }
public DbSet<BodyStyle> BodyStyles { get; set; }
public DbSet<ContactUs> ContactUs { get; set; }
public DbSet<ExteriorColor> ExteriorColors { get; set; }
public DbSet<InteriorColor> InteriorColors { get; set; }
public DbSet<Make> Makes { get; set; }
public DbSet<Model> Models { get; set; }
public DbSet<Specials> Specials { get; set; }
public DbSet<Transmission> Transmissions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
Я новичок в использовании внедрения зависимостей в ASP. NET MVC, в чем может быть моя проблема?