継承したエンティティの例を次に示します。
[Table("Vehicles")]
public partial class Car
{
[Key]
public int Id { get; set; }
[Required]
public Make Make { get; set; }
[Required]
public Model Model { get; set; }
}
コードをリファクタリングして、このテーブルの名前を「Vehicle」に変更します。属性を変更して、すべてうまくいく[Table]
移行ファイルを生成できます。RenameTable(name: "dbo.Cars", newName: "Vehicles")
ただし、クラス名を変更しようとすると、移行スキャフォルダーは同じテーブルを作成してから削除しようとします。次に例を示します。
public override void Up()
{
DropForeignKey("dbo.Vehicles", "Make_Id", "dbo.Makes");
DropForeignKey("dbo.Vehicles", "Model_Id", "dbo.Models");
DropIndex("dbo.Vehicles", new[] { "Make_Id" });
DropIndex("dbo.Vehicles", new[] { "Model_Id" });
CreateTable(
"dbo.Vehicles",
c => new
{
Id = c.Int(nullable: false, identity: true),
Make_Id = c.Int(nullable: false),
Model_Id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Makes", t => t.Make_Id)
.ForeignKey("dbo.Models", t => t.Model_Id)
.Index(t => t.Make_Id)
.Index(t => t.Model_Id);
DropTable("dbo.Vehicles");
}
[Table]
この種の動作を引き起こすことなく、コードのみでクラス名を変更する (属性を同じに保つ) 方法はありますか? それとも、これは単に私がしてはいけないことですか?