UserManager.Create (пользователь, пароль) thowing EntityValidationError говорит Id требуется?

asp.net-identity asp.net-mvc asp.net-mvc-5 entity-framework entity-framework-6

Вопрос

Кто-нибудь знает, почему UserManager.Create(user, password); может быть выбрасывание EntityValidationError Id .

Может ли это иметь какое-то отношение к моему UserManager . Он настроен следующим образом:

public class MyAppDb : IdentityDbContext<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public static MyAppDb Create()
    {
        return new MyAppDb();
    }

    public MyAppDb()
        : base("MyAppDb")
    {
    }
}


public class ApplicationUserStore : UserStore<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationUserStore(MyAppDb context)
        : base(context)
    {
    }
}

public class ApplicationUserManager : UserManager<ApplicationUser, string>
{
    public ApplicationUserManager(IUserStore<ApplicationUser, string> store)
        : base(store)
    {
    }
}

И в контроллере:

public class MyAppDb : IdentityDbContext<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public static MyAppDb Create()
    {
        return new MyAppDb();
    }

    public MyAppDb()
        : base("MyAppDb")
    {
    }
}


public class ApplicationUserStore : UserStore<ApplicationUser, ApplicationRole, string, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationUserStore(MyAppDb context)
        : base(context)
    {
    }
}

public class ApplicationUserManager : UserManager<ApplicationUser, string>
{
    public ApplicationUserManager(IUserStore<ApplicationUser, string> store)
        : base(store)
    {
    }
}

ApplicationUser , ApplicationRole , ApplicationUserLogin , ApplicationUserRole и ApplicationUserClaim все наследуют от классов Identity соответственно.

Кто-нибудь видит что-то не так? Мне удалось зарегистрировать пользователей ( UserManager.Create()) прежде чем я создал все пользовательские классы Identity без проблемы Id .

UPDATE: Кажется, задание string для ключа разбило автогенерированный ключ в контексте базы данных. Это мое лучшее предположение. Теперь я ищу, чтобы я установил Id . Я не хочу, я хочу, чтобы он работал так, как он делал, прежде чем я создал пользовательские поля в User .

Принятый ответ

Кажется, UserStore string сообщает UserStore что вы предоставите Id . Эта проблема исчезла, когда я решил следующую проблему. Есть ли способ создать пользовательский пользователь и роль без указания TKey на IdenitityUser, IdentityRole и IdentityDbContext?

-ИЛИ-

Просто дайте ему id : Guid.NewGuid().ToString()


Популярные ответы

Метод Create () требует идентификатора.

Я просто унаследовал IdentityUser следующим образом:

public class ApplicationUser : IdentityUser
{
  // Rest of your implmentation...
}

Когда я создаю новый экземпляр ApplicationUser, он будет содержать идентификатор.

public class ApplicationUser : IdentityUser
{
  // Rest of your implmentation...
}

Метод GetUser () преобразует UserViewModel, который не имеет ID ApplicationUser с заполненным идентификатором.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему