EF6 ApplicationUser错误的多个外键

时间:2014-11-29 17:22:16

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

我对Entity Framework和代码第一种方法都很陌生,而且我被困住了。对不起,如果这是一个愚蠢的问题。

我发现这里的一些问题看起来一样,但是我得到了另一个错误,然后其他人得到了,我很乐意解决它而不需要添加其他参数。

所以基本上,我有我的ApplicationUser(从Identity加载),如下所示:

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; }
}

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

  

属性上的ForeignKeyAttribute&#39; ReceivedMessages&#39; on type&#39; EF_CF_Basics.Models.ApplicationUser&#39;无效。外键名称&#39; To&#39;在依赖类型&#39; EF_CF_Basics.Models.Message&#39;上找不到。 Name值应该是以逗号分隔的外键属性名称列表。

实际上,视觉工作室告诉我它无法找到To in Message,但它确实存在。

1 个答案:

答案 0 :(得分:2)

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