参数类型虽然继承,但不能分配给参数类型

时间:2014-09-14 10:48:48

标签: c# asp.net asp.net-mvc-5 dbcontext asp.net-identity-2

我尝试从头开始用ASP.net Identity编写MVC应用程序。 为此,我遵循了Ben Foster的两个教程(Tutorial Part1Tutorial Part2

但我坚持第二个教程 - 配置UserManager。以下行对我不起作用:

    // configure the user manager
    UserManagerFactory = () =>
    {
        var usermanager = new UserManager<AppUser>(
            new UserStore<AppUser>(new AppDbContext()));
        ...
    }

Visual Studio强调

new AppDbContext()

并向我显示以下消息:

  

参数类型“MyProject.DbContext.AppDbContext”不能分配给参数类型“System.Data.Entity.DbContext”

我不明白为什么它在我的解决方案中不起作用,因为我完全遵循了教程。我的AppDbContext看起来像:

namespace MyProject.DbContext
{
    using MyProject.Models;

    using Microsoft.AspNet.Identity.EntityFramework;

    public class AppDbContext : IdentityDbContext<User>
    {
        public AppDbContext()
            : base("DefaultConnection")
        {
        }
    }
}

我的用户类:

namespace MyProject.Models
{
    using Microsoft.AspNet.Identity.EntityFramework;

    public class User : IdentityUser
    {
        public string Name{ get; set; }
    }
}

我还从Ben下载了源代码并试图运行它,它没有任何问题。我认为我的所有文件都不在同一个文件夹中没有任何区别?!

我希望你能帮助我。如果一个简单的教程不能正常工作,那真的很令人沮丧......

问候,winklerrr

2 个答案:

答案 0 :(得分:2)

我通过删除与owin和ASP.net Identity有关的所有引用并再次重新添加它来解决了这个问题。

我认为,这个问题是由引用的dll和实际使用的dll之间的差异引起的......(与包管理器控制台一起玩了很多。)

答案 1 :(得分:0)

当您的db-context将UserManager作为通用参数时,您的AppUserUserManager<AppUser>作为泛型类型:UserAppUserUser不是同一个类。

您的用户定义类在任何地方都应该相同。