【问题标题】:Navigation Properties as Primary Keys导航属性作为主键
【发布时间】:2014-06-22 00:49:04
【问题描述】:

我将 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 的键。”

我明确定义了它的键,但它不喜欢它。如何将这些导航属性用作主键?

【问题讨论】:

    标签: c# entity-framework navigation-properties


    【解决方案1】:

    我相信这是因为您选择了复杂实体作为键。您还需要定义充当这些实体的外键的原语。

    【讨论】:

    • 是的,如果我这样做,它确实有效。我只是希望不必定义它们,因为我不希望原语显示为类的属性。
    • 据我所知你必须这样做。这就是 EF 的工作原理,并发挥了一些魔力,例如它如何促进延迟加载。
    【解决方案2】:

    你应该在 MSDN 上阅读这篇文章:-

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

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

    您需要以特定方式设置您的课程,以便 EF 识别您想要实现的目标。

    【讨论】:

      猜你喜欢
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多