CreateAsync不会将IdentityUser与派生的IdentityUser保存到数据库中

时间:2018-10-14 20:25:46

标签: asp.net-core asp.net-identity

发布时,以下代码可以正常工作,直到达到$out方法为止。没有数据保存到数据库。

_userManager.CreateAsync

2 个答案:

答案 0 :(得分:1)

您似乎不是直接使用IdentityUser类,而是使用AppUser类。这可能是扩展IdentityUser<>IdentityUser的类。我不确定您是否有剩余的设置权限,因此过程如下:

如果您已经创建了一个自定义AppUser类,那么可以说您是按照以下方式创建的:

class AppUser : IdentityUser<int>

这意味着您已经像int中那样分配了主键。但是,如果您扩展了IdentityUser,请注意IdentityUser扩展了IdentityUser<string>,这意味着您的密钥是字符串。继续,我要假设您的密钥是int。如果没有,您可以进行相应的更改(将所有int更改为您的密钥类型。

在启动类中,您需要添加以下内容,以将其注册为用于Identity的用户类

services.AddIdentity<AppUser, IdentityRole<int>>()
        .AddEntityFrameworkStores<ApplicationDbContext>();

您的ApplicationDbContext需要定义如下:

public class ApplicationDbContext : IdentityDbContext<AppUser, IdentityRole<int>, int>

如果您不想在以上两段代码中使用IdentityRole<int>,则可以如下定义自定义角色类:

public AppUserRole : IdentityRole<int>

设置完成后,您需要注入UserManager<AppUser>而不是UserManager<IdentityUser>

答案 1 :(得分:0)

谢谢neville-nazerane

我在依赖注入中使用了IdentityUser,而我要做的就是将IdentityUser更改为AppUser。

Startup.cs

services.AddIdentity<AppUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();