我通过解析JSON数据并将记录插入到SQL中的表中。问题在于数据量太大,必须在插入之前在循环中检查每条记录,这会减慢程序的速度。在插入.NET之前检查记录是否存在的最有效方法
我正在使用AddRange()一次插入一块数据,但检查每个值都会导致效率问题。
下面是一个代码片段,我在JSON数据进行循环,并检查该值存在:
foreach (JObject item in content2)
{
try
{
Assignment assignment = JsonConvert.DeserializeObject<Assignment>(item.ToString());
//Begin Assignments
var assignment_id = (int) item["id"];
var course_id = (int) item["course_id"];
if (!CheckIfAssignmentRecordExists(assignment_id))
{
newAssignment.Add(assignment);
log.Info("Inserted Assignment ID: " + assignment_id + " for course id: " + course_id);
writeCountA = writeCountA + 1;
}
else
{
log.Info("Skipping Assignment ID: " + assignment_id);
skipCountA = skipCountA + 1;
}
//End Assignments
}
catch (Exception)
{
log.Info("Error Processing: " + (int) item["id"]);
return;
}
}
这里是分配检查功能:
private static bool CheckIfAssignmentRecordExists(int id)
{
var retVal = false;
using (var db = new DataContext())
{
retVal = db.Assignments.Any(record => record.id == id);
}
return retVal;
}
我已经看到其他建议,如保存到临时表和执行合并,但不知道如何完成。
什么是在插入之前检查增量数据的最有效方法?
我在.NET中使用实体框架6与MVC 5。谢谢。
你目前的方法有什么问题?对我来说它看起来不错 – Rahul