添加依赖注入:"无法将Project.Models.IApplicationDbContext转换为System.Data.Entity.DbContext"

时间:2017-08-30 09:35:02

标签: c# asp.net asp.net-mvc entity-framework

我正在使用Entity Framework在ASP.NET中构建一个MVC Web应用程序,并且我正在尝试将依赖注入添加到数据库上下文中以便于测试。我已经为应用程序db上下文实现了一个接口,如下所示:

public interface IApplicationDbContext : IDisposable
    {
        DbSet<RequestModel> Requests { get; set; }
        DbSet<ApplicationUser> Users { get; set; }
        int SaveChanges();
        void MarkAsModified(RequestModel request);
    }

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext
{
    public ApplicationDbContext()
        : base("MergedDb", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    public DbSet<RequestModel> Requests { get; set; }

    DbSet<ApplicationUser> IApplicationDbContext.Users
    {
        get
        {
            throw new NotImplementedException();
        }

        set
        {
            throw new NotImplementedException();
        }
    }

    public void MarkAsModified(RequestModel request)
    {
        Entry(request).State = EntityState.Modified;
    }
}

这似乎很开心。然后我尝试在启动时启动数据库上下文以设置用户角色:

private void createRolesandUsers()
        {
        IApplicationDbContext db = new ApplicationDbContext();

        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db));
        var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));

在&#34; db&#34;在roleManager和userManager行中,我收到以下错误:

  

参数1:无法将Project.Models.IApplicationDbContext转换为System.Data.Entity.DbContext

我对Entity Framework很陌生,不确定我错过了什么或弄错了什么。如果有人有任何想法或者可以看到我出错的地方,我将非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

这只是发生编译错误,因为您的接口类型为IApplicationDbContext的显式声明的db变量。只需将此行更改为:

ApplicationDbContext db = new ApplicationDbContext();

var db = new ApplicationDbContext();

它会起作用。