0

我目前正在做一个小项目来学习 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 不适用于多个插入。有没有办法加速这段代码?

4

1 回答 1

0

您可以使用我的 SqlCeBulkCopy 库,对于 Windows Phone,数据库必须是 3.5 格式 - http://sqlcebulkcopy.codeplex.com

于 2012-06-23T18:28:40.900 回答