我们有两个表,任务和角色,其中任务具有角色的外键。在我们的应用中,我们间歇性地收到此错误:
System.Data.Entity.Infrastructure.DbUpdateException:发生错误 在更新条目时。有关详细信息,请参见内部异常。 -> System.Data.Entity.Core.UpdateException:发生错误 更新条目。有关详细信息,请参见内部异常。 -> System.Data.SqlClient.SqlException:INSERT语句冲突 具有FOREIGN KEY约束“ FK_tasks_role_id”。冲突 发生在数据库“已编辑”,表“ dbo.roles”,列“ id”中。
作为错误记录/ splunk内容的一部分,我们获得了要保存的数据的序列化对象。当查看对象时,尝试保存的角色ID在dbo.roles表中,因此抛出该错误没有任何意义。
该错误似乎是成批出现的,持续了几秒钟,然后又恢复正常。另外,它会在多个角色ID中发生,所有这些角色ID都存在于角色表中。
EF6中是否还有其他东西可能导致引发此错误?
我检查过的其他内容:
创建约束脚本
ALTER TABLE [dbo].[tasks] WITH CHECK ADD CONSTRAINT [FK_tasks_role_id] FOREIGN KEY([role_id])
REFERENCES [dbo].[roles] ([id])
GO
ALTER TABLE [dbo].[tasks] CHECK CONSTRAINT [FK_tasks_role_id]
GO
EF代码:
public int InsertTask(Task task)
{
var newTask = new task();
newTask.role_id = task.Role.Id;
newTask.name = task.Name;
_dbEntities.tasks.Add(newTask);
_dbEntities.SaveChanges();
return newTask.id;
}
答案 0 :(得分:-1)
如果您尝试插入具有错误(丢失)的角色的任务,则会发生此错误。请检查您的数据库是否包含所选角色。ID。