我是ASP.NET身份的新手,并尝试自定义创建新MVC项目时提供的身份 .
ASP.NET Identity会自动为句柄身份验证和授权创建一些表 .
我的主要目标是创建Users表,但其他人 . 我尝试使用代码来防止创建这些表:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Ignore<IdentityUserRole>();
modelBuilder.Ignore<IdentityUserClaim>();
modelBuilder.Ignore<IdentityRole>();
}
当我想创建用户时,返回错误:
导航属性'Roles'不是'ApplicationUser'类型的声明属性 . 验证它是否未从模型中明确排除,并且它是有效的导航属性 .
我发现内置的Identity用户具有以下结构:
IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>
我需要的是创建一个不包含角色,声明等的自定义IdentityUser . 我只想在运行项目时使用表'Users' .
是否有可能创建自己的IdentityUser或自定义内置的IdentityUser?或者任何建议只是创建'用户'表并使用它?
非常感谢您的建议 .
1 回答
这就是我为了获得解决方案所做的:
我删除了base.OnModelCreating
然后我按此顺序添加了忽略 .
这样做我得到了一个最后的错误,它说:无法删除对象'dbo.Role',因为它是由FOREIGN KEY约束引用的 .
为此我改变了移动DropTable(“dbo.Role”)的迁移 . 我知道这是黑客,但我没有发现EF迁移如何将droptables句子移动到正确的顺序 .
理查德