codefirst,重命名表,触发错误

时间:2016-11-24 19:48:32

标签: entity-framework-6 azure-mobile-services ef-migrations

我的项目是一个Xamarin.Forms应用程序,带有Azure SQL数据库和Azure移动应用程序服务。

我使用代码优先创建数据库。

现在我想将“Customer”类重命名为“Company”。 迁移已正确完成,现有表已重命名。

但是,有一个自动创建的触发器也会重命名,但不会修改使用的表名。所以触发器不再起作用了。

我认为触发器存在是因为添加到模型构建器的“ServiceTableColumn”约定。

这是生成的迁移代码:

TestRequestModel

这是触发器的脚本(执行上述迁移后):

public partial class rename_customer_to_company_step_1 : DbMigration
{
    public override void Up()
    {
        RenameTable(name: "dbo.Customers", newName: "Companies");
    }

    public override void Down()
    {
        RenameTable(name: "dbo.Companies", newName: "Customers");
    }
}

如您所见,表本身已重命名(ON [dbo]。[公司] ),但触发器的内容仍引用前一个表名(UPDATE [dbo]。[Customers])。 当然触发器不起作用。

如何正确修改触发器?触发器真的有必要吗?我可以摆脱这些触发器吗?

任何想法如何纠正这个?我不想手动更新触发器,为什么我需要使用代码优先迁移?

提前致谢,

里斯

1 个答案:

答案 0 :(得分:0)

如果代码优先迁移没有这样做,则必须编辑代码优先迁移文件或自行更新触发器。如果这是一次性的话,触发器相对容易完成。有关详细信息,请参阅http://aka.ms/zumobook的Zumo Book第3章。