我目前正在开发一个使用 Entity Framework 4.1(代码优先)和 SQL Server CE 4.0 的应用程序。我真正喜欢 SQL Server CE 4.0 的新功能之一是计算值。
但是在将旧数据导入我的新数据存储系统(大约 50000 个条目)时,我遇到了一些性能问题。这是我的第二个实现。第一个版本使用 Entity Framework 4.0 和 SQL Server CE 3.5。但是这些实现之间存在巨大的性能差异。代码优先实现大约需要一个小时来导入条目,另一个实现只需要几分钟。
大部分时间花在SaveChanges
方法上。我将问题追溯到[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
属性。如果我使用[DatabaseGenerated(DatabaseGeneratedOption.None)]
并实现自己生成的密钥(作为一种简单的解决方法),性能将回到第一个实现的水平。
这是一个已知问题吗?有没有办法解决这个性能问题?还是生成我自己的密钥是可行的方法?