EF代码首先将引用密钥作为主键

时间:2017-08-18 15:50:11

标签: c# entity-framework-core ef-migrations

在这里陷入非常荒谬的境地。

我在EF核心,ASP.NET核心,Visual Studio 2017社区编码。

我有一个没有主键的模型,如:

public class LoginRecord
{
    public User User { get; set; }

    public int UserId { get; set; }

    public DateTime LastLogin { get; set; }
    public int LoginCount { get; set; } 
}

其中User是一个包含所有字段的表格,如姓名,电子邮件等。

当我add-migration时,会弹出一个错误说:

  

实体类型'LoginRecord'需要定义主键。

然后我尝试将[Key]注释添加到UserId字段,如下所示:

public class LoginRecord
{
    public User User { get; set; }

    [Key]    
    public int UserId { get; set; }

    public DateTime LastLogin { get; set; }
    public int LoginCount { get; set; } 
}

但是现在,EF创建了一个名为UserId1的新列,该列成为外键。

我需要UserId只是一个引用键,并且不需要此表的主键。

有可能吗?如果是,请帮助!

2 个答案:

答案 0 :(得分:0)

您应该添加主键。 我已经知道每个表都应该得到一个名为table + id的字段。如果你更喜欢它,你也可以将它命名为id。 :) 这样每条记录都是独一无二的。

所以我建议你把你的模型改成这样的东西:

public class LoginRecord
{
  [Key]
  public int LoginRecordID {get; set;}

  public User User { get; set; }

  public int UserId { get; set; }

  public DateTime LastLogin { get; set; }
  public int LoginCount { get; set; } 
}

答案 1 :(得分:-1)

尝试:

[ForeignKey("UserId"), Column(Order = 0)]
public int UserId { get; set; }