导航属性作为主键

本文关键字:属性 导航 | 更新日期: 2023-09-27 18:09:36

我使用EF 6与MVC 5。我有一个定义如下的类:

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上阅读这篇文章:-

http://msdn.microsoft.com/en-gb/data/jj679962.aspx

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

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