c# - 在 ASP.NET MVC 4 中设置外键

标签 c# asp.net asp.net-mvc 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”。名称值应该是有效的导航属性名称。

我尝试了很多组合,包括在类似问题中发现的组合,但都没有奏效。

最佳答案

试试这个:

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/

相关文章:

c# - 在运行时,如何从 .Net 应用程序设置任务管理器中显示的 "description"字段?

c# - 为什么 C# 中没有 `fieldof` 或 `methodof` 运算符?

asp.net - ASP .NET 下载具有日语文件名的文件

javascript - 如何在asp.net中获取iframe onload事件

c# - 支持编译依赖的多个版本 (vNext)

C#创建类实例时执行类内的方法

c# - 在 C# 中手动填充 DataTable 的最快方法

asp.net - 如何在 asp.net Blazor 页面中使用单选按钮和复选框

asp.net-mvc - CaSTLeWindsor 也填充了类字段

asp.net-mvc - asp.net mvc 版本将包含验证框架?