0

Umbraco Forms を使用して、データの挿入だけでなく編集も行いたいと考えています。これまでのところ、レコードを編集したいときは、クエリ文字列を介してフォーム GUID とレコード ID を渡し、フィールドに正しいデータを入力しています。ここまでは順調ですね。

次に、Umbraco.Forms.Data.Storage.RecordStorage.RecordInserting イベントに正常にフックしています。

void RecordStorage_RecordInserting(object sender, Umbraco.Forms.Core.RecordEventArgs e)
    {
        var ms = (Umbraco.Forms.Data.Storage.RecordStorage)sender;
        if(this record exists){
         ms.UpdateRecord(e.Record, e.Form);
        }
    }

ただし、編集したレコードを送信しようとすると、 ms.RecordUpdate(e.Record, e.Form) 行が実行され、このエラーが発生します

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_UFRecordDataString_UFRecordFields_Key". The conflict occurred in database "UmbracoPlay", table "dbo.UFRecordFields", column 'Key'.
The statement has been terminated.

ms.InsertRecord を呼び出すたびに同じイベントが発生するため、古いレコードを削除してから新しいレコードを挿入することはできません。

私は何が欠けていますか?Umbraco Forms を使用して既存のデータを編集するにはどうすればよいですか?

4

1 に答える 1