为Guid-keyed IdentityUser生成id

时间:2014-06-15 08:07:00

标签: c# asp.net asp.net-mvc asp.net-identity-2

我已将默认MVC5模板修改为使用string / nvarchar,而不是使用Guid / uniqueidentifier关键用户。我的解决方案类似于此处讨论的解决方案:http://blogs.msdn.com/b/webdev/archive/2013/12/20/announcing-preview-of-microsoft-aspnet-identity-2-0-0-alpha1.aspx

我更改了适用的类型参数,但我的第一个用户是使用id为00000000-0000-0000-0000-000000000000生成的。无法创建第二个用户,因为其主键与第一个用户的主键冲突。

然后,我将适用的类型参数从Guid更改为int,然后工作,用户ID从1开始并递增。

那么如何让它与Guid一起使用?

我必须需要在某个地方挂钩并​​为每个新创建的用户分配一个新的Guid。这是最好的去处?我想可能在ApplicationUser(实现IdentityUser)构造函数中,但我不确定。

1 个答案:

答案 0 :(得分:5)

我发现Tieson T的评论代表了正确的答案,但它是作为评论发布的,而不是答案,因此我将在此重现我的具体解决方案。在我的ApplicationUser类(实现IdentityUser)中,我覆盖了Id属性并添加了System.ComponentModel.DataAnnotations.KeyAttributeSystem.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOptionAttribute属性。我的applicationUser类看起来像这样:

public class ApplicationUser : IdentityUser<Guid, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public override Guid Id
    {
        get { return base.Id; }
        set { base.Id = value; }
    }
    ...
}