我有我的項目是一個Xamarin.Forms應用程序,與Azure SQL數據庫和Azure移動應用服務。codefirst,重命名錶,觸發錯誤
我使用代碼優先來創建數據庫。
現在我想將「客戶」類重命名爲「公司」。 遷移正確完成,現有表被重命名。
但是,有一個自動創建的觸發器也被重命名,但是正在使用的表名不會被修改。所以觸發器不再工作了。
我想觸發器的存在是因爲添加到模型構建器中的「ServiceTableColumn」約定。
這是所生成的遷移代碼:
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");
}
}
這是該觸發器的腳本(執行上述遷移後):
CREATE TRIGGER [dbo].[TR_dbo_Customers_InsertUpdateDelete]
ON [dbo].[Companies]
AFTER INSERT, UPDATE, DELETE AS
BEGIN
UPDATE [dbo].[Customers]
SET [dbo].[Customers].[UpdatedAt] = CONVERT(DATETIMEOFFSET, SYSUTCDATETIME()) FROM INSERTED
WHERE inserted.[Id] = [dbo].[Customers].[Id]
END
正如你可以看到,該表本身已經(ON [dbo]。[Companies] ),但觸發器的內容仍然引用上一個表名(UPDATE [dbo]。[Customers])。 當然,觸發器不起作用。
如何正確修改觸發器?觸發器是否真的有必要?我可以擺脫這些觸發器嗎?
任何想法如何糾正?我更喜歡不手動更新觸發器,爲什麼我需要使用代碼優先遷移?
由於提前,
里斯