我通過解析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