这是我们继承的实体的示例:
[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]
属性相同),而不会导致这种行为?或者这只是我不应该做的事情?