【问题标题】:Changing a POCO class name without causing a huge migration更改 POCO 类名而不导致大量迁移
【发布时间】:2013-03-14 10:05:48
【问题描述】:

这是我们继承的实体的示例:

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

【问题讨论】:

    标签: c# entity-framework ef-code-first code-first entity-framework-migrations


    【解决方案1】:

    您不必使用正在生成的迁移。它试图了解您所做的更改并创建适合您工作的迁移,但显然在这种情况下算法会混淆。

    您可以更改迁移以执行 RenameTable 方法。这应该可以。

    无论如何,请通过http://entityframework.codeplex.com 向 EF 团队提交错误报告

    【讨论】:

      猜你喜欢
      • 2019-02-03
      • 2021-12-30
      • 2017-04-27
      • 2017-06-16
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多