我对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,但它确实存在。
答案 0 :(得分:2)
您可能希望使用[InverseProperty("From")]
代替[ForeignKey("From")]
和[InverseProperty("To")]
代替[ForeignKey("To")]
。外键属性必须是标量(int
,string
,Guid
等),但您的From
和To
属性实际上是实体,即它们是导航属性。