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 を使用して既存のデータを編集するにはどうすればよいですか?