2

我试图找到一种比我现在使用的 Linq 更好、更快的方法来插入大量数据(~50K 行)。我试图写入本地数据库的数据位于序列化并从 WCF 接收的 ORM 映射数据列表中。我热衷于使用 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();
}

提前感谢您的任何答案。博扬

4

1 回答 1

4

我仍然会使用SqlBulkCopy将您的数据从外部文件快速复制到与文件具有相同(平面)结构的临时表中(您需要提前创建该表)

加载后,您可以使用例如存储过程或其他东西将数据拆分到多个表中 - 应该非常快,因为一切都已经在服务器上。

于 2010-06-09T13:56:06.153 回答