Asp.net mvc ASP.NET MVC Identity ASPNetUsers表中有多个主键

Asp.net mvc ASP.NET MVC Identity ASPNetUsers表中有多个主键,asp.net-mvc,asp.net-mvc-5,asp.net-identity,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,在使用ASP.NET MVC标识时,如何将另一个主(复合)键添加到表ASPNetUsers中 通常我会这样做: [Required] [Key, Column(Order = 0)] public int Id { get; set; } [Required] [Key, Column(Order = 1)] public string AccountNo { get; set; } 但我如何使用标识来实现这一点呢 以下是我的代码的开头: public class ApplicationUse

在使用ASP.NET MVC标识时,如何将另一个主(复合)键添加到表ASPNetUsers中

通常我会这样做:

[Required]
[Key, Column(Order = 0)]
public int Id { get; set; }
[Required]
[Key, Column(Order = 1)]
public string AccountNo { get; set; }
但我如何使用标识来实现这一点呢

以下是我的代码的开头:

public class ApplicationUser : IdentityUser
{
    [Required]
    [Key, Column(Order = 0)]
    public string AccountNo{ get; set; }....

但是当我这样做时,ASPNetUsers表中的Id就不再是主键了。我需要在何处/做什么才能使此表中的Id和AccountNo都作为主键?

根据我对Identity的了解,这是不可能的。您可以自定义列类型以使用int或其他内容,而不是默认的字符串,但您只有一列作为键。坦率地说,不需要其他任何东西,而且复合键通常是数据库设计糟糕的标志。唯一好的用途是在M2M联接表上,但即便如此,通常最好有一个真正的标识列。我认为这是不可能的,除非您编写自己的自定义提供程序。也许您可以在该列上创建一个唯一的索引,并在创建新用户时捕获特定的异常,这样您就可以通知用户具有该帐号的行已经存在。