我们正在使用 Entity Framework 5 Code First 方法将我们的 MS-Access 数据库迁移到 SQL Server Compact 4.0。我们发现使用数据库生成的整数 ID 非常慢,更糟糕的是,延迟随着数据库的大小呈指数增长。这使得无法使用 Identity 列,并且在与实体框架配对的 SQL Server Compact 4.0 中,此功能的实现似乎很糟糕。
因此,我们进行了一些测试,发现使用客户端生成的密钥将操作插入速度提高了至少 20 倍,插入的指数增长消失了。
现在我们正在寻找一种生成客户端 ID 的最佳方式。使用 GUID 似乎是最安全的选择,但我读到这会对读取操作产生负面影响。是否有使用客户端生成的自动递增整数的策略?
编辑:我将进一步调查导致该问题的潜在问题。同时,我的真正问题可以回答吗?:-)
EDIT2:令人非常恼火的是,似乎没有人相信在 EF 和 SQL Server compact 4.0 中使用 auto-id 如此缓慢的断言。我发布了一个单独的问题,其中包含一个应该很容易重现的概念证明。