Asp.net mvc 5 实体类型IdentityRole不是当前上下文模型的一部分

Asp.net mvc 5 实体类型IdentityRole不是当前上下文模型的一部分,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,我在MVC项目中实现AsNetIdentity时遇到问题 我在var行中遇到此错误(实体类型IdentityRole不是当前上下文模型的一部分): 使用系统; 使用System.Linq; 使用System.Web.Mvc; 使用EZ.模型; 使用Microsoft.AspNet.Identity.EntityFramework; 命名空间EZ.Controllers { 公共类角色控制器:控制器 { 应用背景; 公共角色控制器() { context=新的ApplicationDbContex

我在MVC项目中实现AsNetIdentity时遇到问题 我在var行中遇到此错误(实体类型IdentityRole不是当前上下文模型的一部分):

使用系统;
使用System.Linq;
使用System.Web.Mvc;
使用EZ.模型;
使用Microsoft.AspNet.Identity.EntityFramework;
命名空间EZ.Controllers
{
公共类角色控制器:控制器
{
应用背景;
公共角色控制器()
{
context=新的ApplicationDbContext();
}
/// 
///获得所有角色
/// 
/// 
公共行动结果索引()
{
var roles=context.roles.ToList();
返回视图(角色);
} 
/// 
///创建新角色
/// 
/// 
//获取:/Roles/Create
公共操作结果创建()
{
返回视图();
}
//
//职位:/Roles/Create
[HttpPost]
公共操作结果创建(FormCollection集合)
{
尝试
{
context.Roles.Add(新的Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
{
名称=集合[“RoleName”]
});
SaveChanges();
ViewBag.ResultMessage=“角色创建成功!”;
返回操作(“索引”);
}
抓住
{
返回视图();
}
} 
/// 
///为用户设置角色
/// 
/// 
公共操作结果SetRoleToUser()
{
var list=context.Roles.OrderBy(role=>role.Name).ToList().Select(role=>newselectListItem{Value=role.Name.ToString(),Text=role.Name}.ToList();
ViewBag.Roles=列表;
返回视图();
}
[HttpPost]
[ValidateAntiForgeryToken]
公共操作结果UserAddToRole(字符串uname,字符串rolename)
{
ApplicationUser user=context.Users.Where(usr=>usr.UserName.Equals(uname,StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
//在下拉列表中显示所有角色
var list=context.Roles.OrderBy(role=>role.Name).ToList().Select(role=>newselectListItem{Value=role.Name.ToString(),Text=role.Name}.ToList();
ViewBag.Roles=列表;
如果(用户!=null)
{
var account=新AccountController();
account.UserManager.AddToRoleAsync(user.Id,rolename);
ViewBag.ResultMessage=“角色创建成功!”;
返回视图(“SetRoleToUser”);
}
其他的
{
ViewBag.ErrorMessage=“抱歉用户不可用”;
返回视图(“SetRoleToUser”);
}
}
}
}

我已经在数据库中编写了表的脚本

这与CodeProject.com中role-security-mvc5-master项目中的代码完全相同。唯一的区别是我移动了数据库中的表,并更改了连接字符串。我丢失了什么

在我的IdentityModel.cs中,我有:

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

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“DefaultConnection”,throwifvv1schema:false)
{
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}

如果您需要更多代码,请让我知道,我将在项目创建时发布。

标识,locadb的数据库。当我移动数据库中的表时,我用我为E创建的连接字符串重写了整个默认连接字符串。这里的大问题是默认连接需要providerName=“System.Data.SqlClient”/>而不是providerName=“System.Data.EntityClient”。在那里要小心。这篇来自Daniel Eagle的优秀文章值得称赞:。关于如何首先在DB中使用Identity的大量详细信息。

项目创建时,Identity是locadb的一个数据库。当我移动数据库中的表时,我用我为E创建的连接字符串重写了整个默认连接字符串。这里的大问题是默认连接需要providerName=“System.Data.SqlClient”/>而不是providerName=“System.Data.EntityClient”。在那里要小心。这篇来自Daniel Eagle的优秀文章值得称赞:。关于如何首先在DB中使用Identity的大量详细信息。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

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