EF 4.1 Sql CE性能问题

| 我知道,我今晚处于提问模式, 我正在构建桌面应用程序。对我来说幸运的是选择一个开放式体系结构,因为我遇到了以下问题: 我的应用程序允许用户添加操作。在我的测试中,我只添加了易于管理的小型(测试)操作。每个操作都将添加到当前为SQL CE 4.0数据库的数据存储中(首先使用EF 4.1代码进行访问非常好)。 现在,我使用一个更大的通用操作(在数据库中大约4000行)测试了该应用程序。而不是花几秒钟,实际上要花费几分钟!在大表中,只有1个外键,当然还有主键,但是似乎4000行对它来说实在太多了。 所有行都以批处理的方式插入,而实际的性能不足是在SaveChanges命令上。 我已经对使用手动查询(已经对其进行了测试)感到不满,但这不是首选选项,因为不支持事务处理,并且它必须是独立操作。 那么,在这里我需要一种新的策略吗?在SQL Server 2008上,您可以进行批量插入,但显然,Sql Server CE不支持该插入。 哪些客户端解决方案像SQL Server CE一样灵活且轻巧? (例如,我当然不希望用户安装SQL Server,也不要使用某些本机组件)。 我可以以某种形式使用序列化,但是感觉就像是在重新发明轮子,而且工作量很大(升级,完整性,多线程访问等)。 提前致谢!     
已邀请:
问题是在SQL CE上通常插入操作有多慢? EF的问题在于它不要求一批插入4.000条记录,而是一一插入记录。当前的EF版本不支持命令批处理,因此您要在序列中执行4.000次插入。在大型SQL Server上,这也是一个问题,但通常更快。我能够在较慢的台式机上六分钟之内,在服务器上的三分钟内,向SQL Server插入大约50.000-100.000个更复杂的记录。     
http://msdn.microsoft.com/zh-CN/magazine/gg490349.aspx 不是专门解决问题的方法,但是这些技术将帮助您解决查询问题。     
这两个答案都很有帮助,但没有提供解决方案。 我发现了这一点:http://sqlcebulkcopy.codeplex.com/,它提供了一个SqlCeBulkCopy类,该类可以在2秒钟内工作并执行插入!我现在正在将其集成到当前的存储库和unitofwork模型中。一旦找到最佳解决方案,我就会在这里发布。 很快就会被...     

要回复问题请先登录注册