C# 导航属性作为主键

C# 导航属性作为主键,c#,entity-framework,navigation-properties,C#,Entity Framework,Navigation Properties,我正在使用EF6和MVC5。我有一个定义如下的类: public class ConEdSignup { [Key, Column(Order = 0)] public virtual ApplicationUser Attendee { get; set; } [Key, Column(Order = 1)] public virtual ConEdSession ConEdSession { get; set; } [Required] pub

我正在使用EF6和MVC5。我有一个定义如下的类:

public class ConEdSignup
{
    [Key, Column(Order = 0)]
    public virtual ApplicationUser Attendee { get; set; }
    [Key, Column(Order = 1)]
    public virtual ConEdSession ConEdSession { get; set; }
    [Required]
    public DateTime SignupTime { get; set; }
    [Required]
    public bool Attended { get; set; }
}
这基本上是一个多对多关系的链接表,其中我有关于该关系的附加属性。当我尝试为此创建迁移时,会出现错误“Models.ConEdSignup::EntityType'ConEdSignup'未定义键。请定义此EntityType的键。”


我清楚地定义了它的键,但它不喜欢它。如何使用这些导航属性作为主键?

我认为这是因为您选择了复杂实体作为主键。您还需要定义充当这些实体外键的基本体

您应该阅读MSDN上的这篇文章:-

它还解释了实体框架所遵循的约定。它还解释了如何创建自己的自定义约定


您需要以特定的方式设置您的类,以便EF识别您试图实现的目标。

是的,如果我这样做,它确实有效。我只是希望不必定义它们,因为我不希望原语显示为类的属性。据我所知,您必须这样做。这就是EF的工作原理,它的一些神奇之处,比如它如何促进延迟加载。