Вы, кажется, не используете IdentityUser
напрямую, а вместо этого AppUser
класс.Это может быть класс, расширяющий IdentityUser<>
или IdentityUser
.Я не уверен, что у вас есть остальные настройки, так что вот процесс:
Если вы создали пользовательский класс AppUser
, допустим, вы создали его следующим образом:
class AppUser : IdentityUser<int>
Это будет означать, что вы назначили первичный ключ, как в int
.Однако, если вы расширили IdentityUser
, обратите внимание, что IdentityUser
расширяет IdentityUser<string>
, что означает, что ваш ключ является строкой.Продолжая, я собираюсь предположить, что ваш ключ int
.Если нет, вы можете внести соответствующие изменения (замените все int
s на ваш тип ключа.
В вашем классе запуска необходимо добавить следующее, чтобы зарегистрировать его как свой пользовательский класс, используемый для 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>
.