在ASP.NET MVC 4中设置外键

我有2个模型,想要创建一个外键关系。 基本上每个音符都应该分配给用户。

[Table("UserProfile")] public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public string UserName { get; set; } public string Email { get; set; } } [Table("UserNotes")] public class UserNotes { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int NoteId { get; set; } [ForeignKey("UserProfile")] public virtual int UserId { get; set; } public string Title { get; set; } public string Content { get; set; } public string Added { get; set; } public DateTime? Edited { get; set; } } 

当我尝试添加新用户注释时,我得到: 类型为“note.DO.Models.UserNotes”的属性“UserId”上的ForeignKeyAttribute无效。 在依赖类型“note.DO.Models.UserNotes”上找不到导航属性“UserProfile”。 Name值应该是有效的导航属性名称。

我尝试了很多组合,包括在类似问题中找到的组合,但没有一组合用。

试试这个 :

 public virtual int UserId { get; set; } [ForeignKey("UserId")] public virtual UserProfile User { get; set; } 

这样,您可以将外键属性与导航属性配对。

编辑:你也可以像这样写:

 [ForeignKey("UserProfile")] public virtual int UserId { get; set; } public virtual UserProfile UserProfile { get; set; } 

这两个片段给出了相同的结果。 您的错误消息显示缺少“UserProfile”属性,您只需添加它。