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; }
}