我想使用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编辑现有数据?
答案 0 :(得分:0)
我无法看到针对此错误的修复程序 - 似乎var url = "/Person/Edit/" + pid;
$.ajax({
url: url,
success: function(data){
$('#editor-container').modal('show');
$('#editor-content-container').html(data);
},
cache: false
});
方法实际上尝试再次插入所有UpdateRecord
个对象而不是更新现有值(或导致此密钥违规的现有字段值。
如果你真的需要解决这个问题 - 正如我所做的那样 - 那么有一件事可行(但让你的主键更加分散)就是删除然后重新插入表单数据:
UFRecordField
一个不整洁的解决方案,但看似有效。