一开始我尝试过,如下所示,但仍然没有结果:
这是我的实体:
public class Passage
{
[Key, ForeignKey("FromID")]
public Localization From { get; set; }
public int ToID { get; set; }
[Key, ForeignKey("ToID")]
public Localization To { get; set; }
[Required]
public string HourForm { get; set; }
[Required]
public string HourTo { get; set; }
[Required]
public int Seats { get; set; }
[Required]
public char Weekend { get; set; }
public int? AdditinalTime { get; set; }
public int FromID { get; set; }
}
我正在尝试基于两个外键创建主键。有错误
EntityType' Passage'没有定义键。定义此EntityType的密钥。
我做错了什么?
答案 0 :(得分:3)
直接从您的第一个链接引用:
"主键始终必须由实体类中的标量属性定义。您不能仅通过导航属性来引用PK。"
因此,您需要将键属性放在标量值上,而不是导航属性。
public class Passage
{
[Key, ForeignKey("From"), Column(Order = 0)]
public int FromID { get; set; }
public Localization From { get; set; }
[Key, ForeignKey("To"), Column(Order = 1)]
public int ToID { get; set; }
public Localization To { get; set; }
}
答案 1 :(得分:1)
如引用links之一所述,您需要使用Column属性来指定composite keys的顺序:
public class Passage
{
[Key,Column(Order=0), ForeignKey("From")]
public int FromId { get; set; }
[Key,Column(Order=1), ForeignKey("To")]
public int ToId { get; set; }
//...
}
我现在注意到你在导航属性上使用这些属性,正如@PaulAbbott在他的回答中所说,必须使用标量属性定义主键,在本例中为FK属性。