C# 导航属性作为主键
我正在使用EF6和MVC5。我有一个定义如下的类: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
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的工作原理,它的一些神奇之处,比如它如何促进延迟加载。