我目前正在开展一个小项目来学习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不适用于多个插入。有没有办法加速这段代码?
答案 0 :(得分:0)
您可以使用我的SqlCeBulkCopy库,对于Windows Phone,数据库必须是3.5格式 - http://sqlcebulkcopy.codeplex.com