我已将默认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)构造函数中,但我不确定。
答案 0 :(得分:5)
我发现Tieson T的评论代表了正确的答案,但它是作为评论发布的,而不是答案,因此我将在此重现我的具体解决方案。在我的ApplicationUser
类(实现IdentityUser
)中,我覆盖了Id
属性并添加了System.ComponentModel.DataAnnotations.KeyAttribute
和System.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; }
}
...
}