C# 在EF 5中定义导航属性,代码优先迁移

C# 在EF 5中定义导航属性,代码优先迁移,c#,entity-framework,asp.net-mvc-4,entity-framework-migrations,C#,Entity Framework,Asp.net Mvc 4,Entity Framework Migrations,看我的模型 public class UsersContext : DbContext { public UsersContext() : base("DefaultConnection") { } public DbSet<UserProfile> UserProfiles { get; set; } pu

看我的模型

    public class UsersContext : DbContext
        {
            public UsersContext()
                : base("DefaultConnection")
            {
            }

            public DbSet<UserProfile> UserProfiles { get; set; }
            public DbSet<Files> Files { get; set; }
        }

        [Table("UserProfile")]
        public class UserProfile
        {
            [Key]
            [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
            public int UserId { get; set; }
            public string UserName { get; set; }
        }

    [Table("Files")]
    public class Files
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        [Display(Name = "FileID")]
        public int FileID { get; set; }

        [Required]
        [ForeignKey("UserId")] // this is what I have tried
        [Display(Name = "For User")]
        public int UserId { get; set; }

        [Display(Name = "Description")]
        public string Desc { get; set; }

        [Required]
        [Display(Name = "Document Upload")]
        public string DocumentPath { get; set; }
    }
public类用户上下文:DbContext
{
公共用户上下文()
:base(“默认连接”)
{
}
公共数据库集用户配置文件{get;set;}
公共数据库集文件{get;set;}
}
[表(“用户档案”)]
公共类用户配置文件
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId{get;set;}
公共字符串用户名{get;set;}
}
[表(“文件”)]
公共类文件
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[显示(Name=“FileID”)]
public int FileID{get;set;}
[必需]
[ForeignKey(“UserId”)]//这是我尝试过的
[显示(Name=“用于用户”)]
public int UserId{get;set;}
[显示(Name=“Description”)]
公共字符串Desc{get;set;}
[必需]
[显示(Name=“文档上传”)]
公共字符串DocumentPath{get;set;}
}
我想要的是为files表中的用户id定义一个外键。我该怎么做呢。我尝试使用
[ForeignKey]
属性。但在PCM中执行
updatedatabase-verbose
时,它给了我这个错误

错误-导航属性“UserId”不是上声明的属性 键入“文件”。验证是否未将其明确排除在 模型,并且它是有效的导航属性


1.你能展示一下你试过的代码吗?2.你有什么错误?3.如果您已经有数据并添加了不可为空的关系,那么您当然应该更新您的数据…@RaphaëlAlthaus请查看我的编辑。。
[Table("Files")]
public class Files
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    [Display(Name = "FileID")]
    public int FileID { get; set; }

    [Required]

    [Display(Name = "For User")]
    public int UserId { get; set; }


    [Display(Name = "Description")]
    public string Desc { get; set; }

    [Required]
    [Display(Name = "Document Upload")]
    public string DocumentPath { get; set; }

    [ForeignKey("UserId")] // this is what I have tried
    public virtual UserProfile UserProfile { get; set; }
}