我们正在使用 Entity Framework 5 Code First 方法将 MS-Access 数据库迁移到 SQL Server Compact 4.0。我们发现使用数据库生成的整数 ID 非常慢,更糟糕的是,延迟随着数据库的大小呈指数级增加。这使得使用 Identity 列变得不可能,并且在与 Entity Framework 配合使用的 SQL Server Compact 4.0 中似乎该功能的实现很糟糕。
因此,我们进行了一些测试,发现使用客户端生成的 key 将操作插入速度至少提高了 20 倍,插入的指数增长消失了。
现在我们正在寻找生成客户端 ID 的最佳方法。使用 GUID 似乎是最安全的选择,但我读到这会对读取操作产生负面影响。是否有使用客户端生成的自动递增整数的策略?
编辑: 我将进一步调查导致该问题的根本问题。同时我真正的问题可以得到解答吗? :-)
编辑2: 令人恼火的是,似乎没有人相信在 EF 和 SQL Server Compact 4.0 中使用自动 id 速度如此之慢的说法。我发了a separate question通过一个应该很容易重现的概念证明来解决这个问题。
最佳答案
如果您使用 EF 移动大量数据,那么您就做错了。使用 ADO.NET,例如 BULK COPY 方法(使用 SQL CE 使用 SqlCeUpdateableRecord)。您可以使用我的 SqlCeBulkCopy 库来节省一些编码工作。
关于database - 使用(顺序)GUID 是数据库生成 ID 的唯一可行替代方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740710/