Sql server 基于外键EF的主键

Sql server 基于外键EF的主键,sql-server,entity-framework,ef-code-first,Sql Server,Entity Framework,Ef Code First,一开始我尝试过,如下所示,但仍然没有结果: 这是我的实体: public class Passage { [Key, ForeignKey("FromID")] public Localization From { get; set; } public int ToID { get; set; } [Key, ForeignKey("ToID")] public Localization To { get

一开始我尝试过,如下所示,但仍然没有结果:

这是我的实体:

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的键

我做错了什么?

正如其中一位所说,您需要使用该属性来指定以下内容的顺序:


我注意到现在您正在导航属性上使用这些属性,正如@PaulAbbott在回答中所说的,主键必须使用标量属性定义,在本例中为FK属性。

直接从您的第一个链接引用:

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; }
}
“主键必须始终由实体类中的标量属性定义。不能仅通过导航属性引用PKs。”

因此,您需要将键属性放在标量值上,而不是导航属性上

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; }
}