我们正在使用 Entity Framework 5 Code First 方法将 MS-Access 数据库迁移到 SQL Server Compact 4.0。我们发现使用数据库生成的整数 ID 非常慢,更糟糕的是,延迟随着数据库的大小呈指数级增长。这使得使用 Identity 列变得不可能,并且在与实体框架配合使用的 SQL Server Compact 4.0 中似乎此功能的实现很糟糕。
因此,我们进行了一些测试,发现使用客户端生成的密钥将操作插入速度至少提高了 20 倍,插入的指数增长消失了。
现在我们正在寻找生成客户端 ID 的最佳方法。使用 GUID 似乎是最安全的选择,但我读到这会对读取操作产生负面影响。是否有使用客户端生成的自动递增整数的策略?
编辑:
我将进一步调查导致该问题的根本问题。同时我真正的问题可以得到解答吗? :-)
编辑2:
令人恼火的是,似乎没有人相信在 EF 和 SQL Server Compact 4.0 中使用自动 id 速度如此之慢的说法。我已经发布一个单独的问题 https://stackoverflow.com/questions/14768394/exponentially-deteriorating-performance-on-inserts-in-sql-server-compact-4-0-tab关于这一点,应该有一个易于复制的概念证明。
如果您使用 EF 移动大量数据,那么您就错了。使用 ADO.NET,例如 BULK COPY 方法(对于 SQL CE,使用 SqlCeUpdateableRecord)。您可以使用我的 SqlCeBulkCopy 库来节省一些编码工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)