でマスター・ディテールを組み合わせた:Entity Frameworkの、コード-最初:私はコードの最初のEFを使用して、単純な主従関係を持つゼロ対1の関係
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は私が望んでいないTasks
テーブルにUser_Id
列を追加しようとしている、と私はマスター/詳細関係のために必要な外部キーをドロップします
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()
{
// ...
}
それでは、どのように私は、マスター・ディテール関係を維持します1つのタスクへの参照をUser
クラスに追加しながら、ユーザーとタスクの間で?