在这里陷入非常荒谬的境地。
我在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
只是一个引用键,并且不需要此表的主键。
有可能吗?如果是,请帮助!
答案 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; }