Оптимизация вставки каркаса сущностей - PullRequest
0 голосов
/ 01 апреля 2011

Мне нужно вставить много данных в таблицу (таблица: «Файл», сервер: mysql) с помощью Entity Framework.

Определение таблицы «Файл»:
-Id, int, primarykey, auto_increment
-Name, varchar (100)

Теперь я использую код, подобный следующему:

TestDatabaseEntities entities = new TestDatabaseEntities()

for (int i = 0; i < 100000; ++i)
{
    File f = new File();
    f.Name = "test";

    entities.File.AddObject(f);
}

entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);

Мне не нужно получать Id вставленных значений.Как я могу улучшить вставку?

1 Ответ

1 голос
/ 01 апреля 2011

Вы не можете улучшить его, потому что EF не предлагает никаких оптимизаций или пакетной обработки команд.Entity Framework не является хорошим инструментом для обработки больших пакетов данных.Если вам просто нужно инициализировать 100 000 записей, используйте хранимую процедуру, но если вам нужно вставить 100 000 различных записей, вы получите намного лучшие результаты, если будете напрямую использовать ADO.NET и выполнять, например, 100+ вставок в одном DbCommand.EF всегда будет примерно в 100 раз медленнее, потому что он будет выполнять каждую вставку в отдельном цикле в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...