实体框架关键问题

use*_*218 2 c# entity-framework composite-key

我尝试登录时遇到以下错误:

Project.Model.Identity.UserLogin :: EntityType'UserLogin'没有定义键.定义此EntityType的键.UserLogins:EntityType:EntitySet'UserLogins'基于没有定义键的'UserLogin'类型.

我试图在我的dbcontext中使用复合键

  // Primary Key
  this.HasKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId });
Run Code Online (Sandbox Code Playgroud)

但它似乎无法选择它,看起来它正在搜索模型中的键而不是在上下文中,因为当我在模型中添加"[Key]"关键字时,它抱怨必须使用HasKey复合键

public partial class UserLogin
{
    [Key]
    public string LoginProvider { get; set; }
    [Key]
    public string ProviderKey { get; set; }
    [Key]
    public string UserId { get; set; }
    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我如何通过这个?我是否在模型中添加了HasKey,如果是这样,为什么不在上下文中添加它?

Fab*_*ous 5

如文档中所述,

当您有复合键时,Entity Framework要求您定义键属性的顺序.您可以使用Column批注指定订单.

尝试修改代码,如下所示:

public partial class UserLogin
{
    [Key]
    [Column(Order=1)]
    public string LoginProvider {get; set;}
    [Key]
    [Column(Order=2)]
    public string ProviderKey {get; set; }
    // and so on...
}
Run Code Online (Sandbox Code Playgroud)