私はXamarin.Formsアプリケーションで、Azure SQLデータベースとAzure Mobile Appサービスを使用してプロジェクトを作成しています。codefirst、テーブルの名前を変更、トリガーエラー
私はコードファーストを使用してデータベースを作成しています。
今、クラス「Customer」の名前を「Company」に変更します。 移行が正しく行われ、既存のテーブルの名前が変更されます。
しかし、トリガーが自動的に作成され、名前が変更されますが、使用されるテーブル名は変更されません。トリガーはもう働きません。
"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])を参照します。 もちろん、トリガーは機能しません。
トリガーを正しく変更するにはどうすればよいですか?トリガーは本当に必要ですか?これらのトリガーを取り除くことはできますか?
これを修正する方法はありますか?手動でトリガを更新したくないのですが、なぜ私はそれを行う必要がある場合、コードを最初に移行するのですか?事前に
おかげで、
ヨリス