Я пытаюсь найти лучший и более быстрый способ вставки довольно большого количества данных (~ 50K строк), чем используемый мной Linq.
Данные, которые я пытаюсь записать в локальную базу данных, находятся в списке данных ORM, сериализованных и полученных из WCF.
Я заинтересован в использовании SqlBulkCopy, но проблема в том, что таблицы нормализованы и на самом деле представляют собой последовательности или взаимосвязанные таблицы с отношениями один-ко-многим.
Вот код, иллюстрирующий мою точку зрения:
foreach (var meeting in meetingsList)
{
int meetingId = dbAccess.InsertM(value1, value2...);
foreach (var competition in meeting.COMPETITIONs)
{
int competitionId = dbAccess.InsertC(meetingid, value1, value2...);
foreach(var competitor in competition.COMPETITORs)
{
int competitorId = dbAccess.InsertCO(comeetitionId, value1,....)
// and so on
}
}
}
где dbAccess.InsertMeeting выглядит примерно так:
// check if meeting exists
int meetingId = GetMeeting(meeting, date);
if (meetingId == 0)
{
// if meeting doesn't exist insert new
var m = new MEETING
{
NAME = name,
DATE = date
}
_db.InsertOnSubmit(m);
_db.SubmitChanges();
}
Заранее спасибо за любые ответы.
Боян