【发布时间】:2017-02-26 16:01:17
【问题描述】:
Person 是包含所有用户的用户模型。变更模型包括 EngineerId 和 ManagerId,两者都是 Person ID。为什么会出现此错误?
无法为 ProjectName.Models.Change 类型的外键确定复合外键排序。在复合外键属性上使用 ForeignKey 数据注释时,请确保使用 Column 数据注释或 fluent API 指定顺序。
public class Change
{
[Key]
public int ChangeId { get; set; }
[Required(ErrorMessage = "Change description is required.")]
[Display(Name = "Change Description")]
[DataType(DataType.MultilineText)]
public string ChangeDescription { get; set; }
[Required(ErrorMessage = "Change date is required.")]
[Display(Name = "Date of Change")]
[DataType(DataType.Date)]
public DateTime ChangeDate { get; set; }
[Required(ErrorMessage = "Time is required.")]
[Display(Name = "Time of Change")]
[DataType(DataType.Time)]
public DateTime ChangeTime { get; set; }
[Required(ErrorMessage = "Engineer name is required.")]
[Display(Name = "Engineer")]
[ForeignKey("person")]
public int EngineerId { get; set; }
[Required(ErrorMessage = "Status is required.")]
[Display(Name = "Status")]
public int StatusId { get; set; }
[Required(ErrorMessage = "Manager is required.")]
[Display(Name = "Manager")]
[ForeignKey("person")]
public int ManagerId { get; set; }
[Required(ErrorMessage = "System is required.")]
[Display(Name = "System")]
public int SystemDetailId { get; set; }
public virtual Person person { get; set; }
public virtual Status status { get; set; }
public virtual SystemDetail systemdetail { get; set; }
}
【问题讨论】:
-
@CodeCaster 我认为这里的问题有所不同 - OP 确实 不 想要复合 FK。你介意重新打开它吗?
-
@CodeCaster 是的,这就是我所指的
[Key, Column(Order = index)]--谢谢 -
@Nathan McKaskle 请确认您不想要复合 FK,所以我可以重新提出问题。
-
你不能称之为重复,我们在这里谈论的是 MVC 6,这是几年后的事了。另一个问题没有回答我的问题,据我所知,当时没有注释之类的东西。
-
另见Entity Framework Code First - two Foreign Keys from same table,谷歌第一次点击“ef code first two foreign keys to the same table”。
标签: c# entity-framework