我的第一个项目是Entity Framework和SQL Server Compact。
该数据库有大约15个表,它们都有其他表的外键。我必须读取数千个XML文件并将其数据导入数据库。数据库结构镜像XML文件结构。最多有5个级别的表层次结构。因此,对于“顶部”表中的每条记录,我必须在基础表中插入一个或多个。
我正在使用实体框架进行插入,它工作正常,但性能非常差:(。我认为主要问题是,对于大多数记录,必须读回ID以用于基础表中的记录。
另一件事是 - 如果我知道的话 - 实体框架使用单独的命令插入每个记录。
有没有办法大幅提高性能?
谢谢
使用SQL Compact Bulk Insert Library库以批量形式插入数据。
如果您需要更新任何记录,请使用以下技术:
首先,请确保使用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;
});