防止重复记录插入实体框架Webooks

时间:2018-04-04 01:12:57

标签: c# entity-framework duplicates webhooks

我们目前每天从第三方公司收到许多webhook。

webhooks数据包含开始日期和结束日期以及用户ID。当这些webhook进入时,我首先检查以确保数据库中不存在该记录。例如

 var CheckForDuplicateRefreshWebhook = await db.DataRefreshes.SingleOrDefaultAsync(x => x.startdate = startdate && x.enddate == enddate && x.userid == userid);

if(CheckForDuplicateRefreshWebhook == null)
{
  //Insert Record
} else {
  //Dont Insert Record
}

现在我遇到的问题是2个精确的webhook以毫秒为单位。这很少发生,但仍然将两个webhooks数据插入数据库。

我认为第一个webhook进来了,而现有记录的检查仍在执行第二个确切的webhook也在进入,其中检查记录是否在数据库中的代码尚未完成正在执行,并且正在添加两个确切的webhook。

我想知道是否有办法避免这种情况?我一直在寻找如何在继续之前等待任务完成但仍然没有成功。

总的来说,在插入第二个webhook之前,重复的webhook正在快速进入第一个插件尚未完成。

基于何时进入webhook,我们还执行另一组函数,这些函数还将另一组记录插入到另一个表中,并在另一个表中创建重复项。

由于

2 个答案:

答案 0 :(得分:0)

Windows具有许多同步功能。 。 。实际上很难知道哪些可以使用。搜索信号量,互斥量和关键部分。 。 。每个人都有自己的优势和劣势。 。 。阅读所有内容然后根据您的具体情况决定。

答案 1 :(得分:0)

解决此方案的一种方法是将入站数据放入队列,并使辅助线程或进程按照项目放入其中的顺序通过队列。

这可能会出现性能问题,因为瓶颈是处理队列中的项目的单个进程。

相关问题