我目前正在做一个小项目来学习 Linq,我想在我的桌面机器上为 Windows Phone 应用程序创建一个大型 SDF 数据库。我要创建的应用程序需要一个带有制表符分隔条目的文本文件,并且应该将它们插入到 SDF 文件中。文件中有大约 900000 行。目前我以这种方式插入它们:
ConcurrentBag<Entry> data = new ConcurrentBag<Entry>();
Parallel.ForEach<DictCCParser.Entry>(entries, e =>
{
Entry entry = new Entry { LanguageOne = e.Lang1, LanguageTwo = e.Lang2, GroupId = groupIds[e.Group] };
data.Add(entry);
});
Console.WriteLine("Inserting data");
db.Entries.InsertAllOnSubmit(data);
db.SubmitChanges();
问题是,LINQ 似乎创建了 900000 个单独的 INSERT INTO 语句。我读过可以使用批量插入,但是我遇到的每个实现都需要一个 SQLCE 4.0 文件。我试图创建一个包含所有插入的巨大查询,例如
INSERT INTO Entries(LanguageOne, LanguageTwo, Group) VALUES (...),(...),(...)
但显然 SqlCE 不适用于多个插入。有没有办法加速这段代码?