我的第一个项目是Entity Framework和SQL Server Compact。
数据库有大约15个表,这些表都有其他表的外键。 我必须读取数千个XML文件并将其数据导入数据库。数据库结构镜像XML文件结构。最多有5个级别的表层次结构。因此,对于“顶部”表中的每条记录,我必须在基础表中插入一个或多个。
我正在使用Entity Framework进行插入,它工作正常,但性能非常差:(。 我认为主要的问题是,对于大多数记录,必须回读ID以用于基础表中的记录。
另一件事是 - 如果我知道的话 - 实体框架使用单独的命令插入每条记录。
有没有办法大幅提升效果?
谢谢
答案 0 :(得分:0)
使用SQL Compact Bulk Insert Library库以批量形式插入数据。
如果您需要更新任何记录,请使用此技术:
答案 1 :(得分:0)
首先,请确保使用AddRange或其他解决方案,以确保由于DetectChanges方法而导致性能结果不佳。
请参阅:http://entityframework.net/improve-ef-add-performance
免责声明:我是Entity Framework Extensions
的所有者此库支持所有主要提供商,包括 SQL Server Compact
默认情况下,BulkInsert会自动获取插入行的ID。
此库允许您执行场景所需的所有批量操作:
实施例
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);
// Customize Primary Key
context.BulkMerge(customers, operation => {
operation.ColumnPrimaryKeyExpression =
customer => customer.Code;
});