我需要使用Entity Framework向表中插入大量数据(表:'File',server:mysql)。
'文件'表定义:
-Id,int,primary key,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。 我如何改善插入?
答案 0 :(得分:1)
您无法改进它,因为EF不提供任何优化或命令批处理。实体框架不是处理大数据批处理的好工具。如果您只需要初始化100.000条记录,请使用存储过程但是如果需要插入100.000条不同的记录,则可以直接使用ADO.NET并在单DbCommand
中执行100多个插入,从而获得更好的结果。 EF总是会慢100倍,因为它会在单独的数据库往返中执行每个插入。