私は現在、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は複数の挿入では機能しません。このコードを高速化する方法はありますか?