現在使用しているLinqよりもかなり大量のデータ(〜50K行)を挿入するためのより優れた高速な方法を見つけようとしています。ローカル データベースに書き込もうとしているデータは、WCF からシリアル化されて受信された ORM マップ データのリストにあります。私は SqlBulkCopy を使用したいと思っていますが、問題は、テーブルが正規化されており、実際には 1 対多の関係を持つシーケンスまたは相互接続されたテーブルであることです。
私の要点を示すコードを次に示します。
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();
}
ご回答ありがとうございます。ボジャン