UserManager.Create(用户,密码)thowing EntityValidationError说Id是必需的?

Sea*_*ome 5 asp.net-mvc entity-framework entity-framework-6 asp.net-mvc-5 asp.net-identity

任何人都知道为什么UserManager.Create(user, password);可能会抛出EntityValidationErrorId是必需的.

它可能与我有关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)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

在这样的控制器中:

public class AccountController : Controller
{
    public AccountController()
        : this(new ApplicationUserManager(new ApplicationUserStore(new MyAppDb())))
    {
    }

    public AccountController(ApplicationUserManager userManager)
    {
        UserManager = userManager;
        UserManager.PasswordValidator = (IIdentityValidator<string>)new MinimumLengthValidator(8);
        UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true };
    }

    public ApplicationUserManager UserManager { get; private set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

ApplicationUser,ApplicationRole,ApplicationUserLogin,ApplicationUserRole,并ApplicationUserClaim从身份类别都分别继承.

有人看错了吗?我能够注册用户(UserManager.Create())在我创建所有自定义Identity类之前没有Id问题.

更新:似乎指定stringKey已破坏数据库上下文中自动生成的密钥.这是我最好的猜测.它现在正在寻找我设置Id.我不想,我希望它在我创建自定义字段之前的工作方式User.

Sea*_*ome 3

似乎指定string告诉UserStore您将提供Id. 当我解决以下问题后,这个问题就消失了有没有办法在不指定 IdenitityUser、IdentityRole 和 IdentityDbContext 上的 TKey 的情况下创建自定义用户和角色?

-或者-

只需给它一个id这样的:Guid.NewGuid().ToString()