0

私は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])を参照します。 もちろん、トリガーは機能しません。

トリガーを正しく変更するにはどうすればよいですか?トリガーは本当に必要ですか?これらのトリガーを取り除くことはできますか?

これを修正する方法はありますか?手動でトリガを更新したくないのですが、なぜ私はそれを行う必要がある場合、コードを最初に移行するのですか?事前に

おかげで、

ヨリス

答えて

0

コード-最初の移行はそれをしなかった場合は、コード最初の移行ファイルを編集したり、トリガーを自分で更新する必要があります。これが1回限りのものであれば、トリガーは比較的簡単に実行されます。詳細はZumo Bookの第3章http://aka.ms/zumobookを参照してください。

関連する問題