我正在尝试找到一种比我现在使用的 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();
}
预先感谢您的任何答复。
博扬
我仍然会使用SqlBulkCopy
快速将数据从外部文件复制到暂存表与文件具有相同的(平面)结构(您需要提前创建该表)
加载后,您可以使用例如将数据拆分到多个表中存储过程或其他东西 - 应该非常快,因为所有内容都已经在服务器上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)