我有 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”。名称值应该是有效的导航属性名称。
我尝试了很多组合,包括在类似问题中发现的组合,但都没有奏效。
最佳答案
试试这个:
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”属性,您只需添加它即可。
关于c# - 在 ASP.NET MVC 4 中设置外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19517451/