Мне нужно вставить большой объем данных в sqlite
дБ.
Я использую Linq to Entities
.
У меня проблема с добавлением большого объема данных 1M + .
Недостаточно памяти или очень много времени.
Этот код - быстрый, но требует много памяти:
// query - IQueryable of DbfRecord
// db - ObjectContext
int i = 0;
foreach (var item in query) {
db.AddToKladrs(new Kladr() {
Id = item.GetField(0),
ParentId = item.GetField(1),
RegionId = item.GetField(3),
Name = item.GetField(2),
Index = item.GetField(4)
});
if(++i % 4000 == 0)
db.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
}
Этот код - не ресурс-интенсивный, но очень медленный :
// query - IQueryable of DbfRecord
// db - ObjectContext
foreach (var item in query) {
db.ExecuteStoreCommand("insert into [Kladr] values({0}, {1}, {2}, {3}, {4})",
item.GetField(0),
item.GetField(1),
item.GetField(3),
item.GetField(2),
item.GetField(4)
);
}
Я пропустил конструкцию try-catch и типы призраков.
Помогите найти лучшее решение!