【问题标题】:EF6 Multiple foreign keys for ApplicationUser ErrorEF6 ApplicationUser 错误的多个外键
【发布时间】:2014-11-30 02:04:58
【问题描述】:

我对 Entity Framework 和代码优先方法还很陌生,但我被困住了。对不起,如果这是一个愚蠢的问题。

我在这里发现了一些看起来相同的问题,但我得到了一个错误,然后是其他人得到的错误,如果可能的话,我很乐意在不需要添加其他参数的情况下解决它。

所以基本上,我的 ApplicationUser(从身份加载)看起来像这样:

public class ApplicationUser : IdentityUser
{
    public virtual Province Provincie { get; set; }

    [ForeignKey("From")]
    public virtual ICollection<Message> SentMessages { get; set; }

    [ForeignKey("To")]
    public virtual ICollection<Message> ReceivedMessages { get; set; }


}

我有一个看起来像这样的消息类:

public class Message
{
    [Key]
    public int ID { get; set; }
    public virtual ApplicationUser From { get; set; }
    public virtual ApplicationUser To { get; set; }
    public String MessageContent { get; set; }
    public DateTime Date { get; set; }
}

现在,当我尝试添加迁移时,我收到以下错误:

类型“EF_CF_Basics.Models.ApplicationUser”的属性“ReceivedMessages”上的 ForeignKeyAttribute 无效。在依赖类型“EF_CF_Basics.Models.Message”上找不到外键名称“To”。 Name 值应该是一个逗号分隔的外键属性名称列表。

实际上,Visual Studio 告诉我它在 Message 中找不到 To,但它确实存在。

【问题讨论】:

    标签: c# entity-framework-6 asp.net-identity


    【解决方案1】:

    您可能想使用[InverseProperty("From")] 代替[ForeignKey("From")][InverseProperty("To")] 代替[ForeignKey("To")]。外键属性必须是标量(intstringGuid 等),但您的 FromTo 属性实际上是实体,即它们是导航属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多