我使用代码优先 EF 有一个简单的主从关系:
public class User
{
public string Id { get; set; }
public ICollection<Tasks> Tasks { get; set; }
}
public class Task
{
public string Id { get; set; }
[Required]
public string UserId { get; set; }
public User User { get; set; }
}
现在我想修改它,以便用户可以执行一项最重要的任务。所以我修改 User 类来添加它:
public class User
{
public string Id { get; set; }
public ICollection<Tasks> Tasks { get; set; }
public string MostImportantTaskId { get; set; }
[ForeignKey("MostImportantTaskId")]
public Task MostImportantTask { get; set; }
}
当我跑步时Add-Migration
然而,我得到了意想不到的结果。 EF 正在尝试添加一个User_Id
列到Tasks
表,我不想要,并删除主/详细关系所需的外键:
public override void Up()
{
DropForeignKey("dbo.Tasks", "UserId", "dbo.Users");
AddColumn("dbo.Tasks", "User_Id", c => c.String(maxLength: 128));
AddColumn("dbo.Users", "MostImportantTaskId", c => c.String(maxLength: 128));
CreateIndex("dbo.Tasks", "User_Id");
CreateIndex("dbo.Users", "MostImportantTaskId");
AddForeignKey("dbo.Users", "MostImportantTaskId", "dbo.Tasks", "Id");
AddForeignKey("dbo.Tasks", "User_Id", "dbo.Users", "Id");
}
public override void Down()
{
// ...
}
那么如何维护用户和任务之间的主从关系,同时将单个任务的引用添加到User
class?