Я пытаюсь использовать библиотеку EntityFramework.BulkInsert, чтобы воспользоваться преимуществами EF6 и SqlBulkCopy.
Документация кажется очень простой, однако я не могу загрузить какие-либо данные в базу данных.
Для сложного примера вот код:
public void WriteChunkNoAsync(int chunkCount, bool forceSave = false)
{
Chunking.Entities.Add(this);
if (forceSave || Chunking.Entities.Count % chunkCount == 0)
{
using (var db = new FlatESContainer())
{
//db.Entity.AddRange(Chunking.Entities); //This will work
db.BulkInsert(Chunking.Entities);
Chunking.Entities = new List<Entity>();
db.SaveChanges();
}
}
}
Этот код в основном будет вставляться в глобальный список до тех пор, пока счетчик списка не будет делиться на chunckCount.
Функция AddRange работает просто отлично. Итак, мы решили создать очень простую базу данных с одной таблицей под названием «Тест», и вот проблема, с которой мы столкнулись:
List<Test> tests = new List<Test>();
for (int i = 0; i < 1000; i++)
{
tests.Add(new Test());
}
using (var context = new SimpleContainer())
{
//This works fine
context.Tests.AddRange(tests);
//This causes an exception: Type 'TestSimpleDatabase.Test' is not found in context 'TestSimpleDatabase.SimpleContainer'
context.BulkInsert(tests);
context.SaveChanges();
}
Я считаю, что это отдельные проблемы, но, возможно, кто-то в сообществе stackoverflow знает, почему у нас возникла эта проблема.