【发布时间】:2011-04-13 19:53:39
【问题描述】:
我知道,我今晚处于提问模式,
我正在构建一个桌面应用程序。幸运的是我选择了一个开放的架构,因为我遇到了以下问题:
我的应用程序允许用户添加操作。在我的测试中,我只添加了易于管理的小(测试)操作。每个操作都被添加到当前是 SQL CE 4.0 数据库的数据存储中(首先使用 EF 4.1 代码访问,这很棒)。
现在我使用更大的通用操作(数据库中大约 4000 行)测试了应用程序。插入实际上需要几分钟,而不是花费几秒钟!在大表中,只有1个外键,当然还有主键,但看起来4000行就够了。
所有行都分批插入,真正的性能不足在于 SaveChanges 命令。
我对使用手动查询感到不满(还没有测试过),但这不是首选选项,因为不支持事务并且它必须是一个独立的操作。
那么,我需要一个新的策略吗?在 SQL Server 2008 上,您可以进行批量插入,但显然 Sql Server CE 也不支持。
哪些客户端解决方案与 SQL Server CE 一样灵活且轻量级? (例如,我当然不希望用户安装 SQL Server,也不希望使用某些本地组件)。
我可以以某些形式使用序列化,但这感觉像是在重新发明轮子,而且工作量很大(升级、完整性、多线程访问等)。
提前致谢!
【问题讨论】:
-
您要插入的表上是否有很多索引,或者有很多连接? 4000 行似乎非常小,插入需要几分钟。
-
不,没有索引,只有 1 个外键和 1 个主键。事实上,只有 4 列是 4 个整数
-
一个问题是我没有智能跟踪并且不能真正看到 SaveChanges 中发生了什么。我只是看到那里消耗了时间,而且只有大量数据
标签: c# entity-framework-4.1 sql-server-ce