0

我目前正在开发一个使用 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)]并实现自己生成的密钥(作为一种简单的解决方法),性能将回到第一个实现的水平。

这是一个已知问题吗?有没有办法解决这个性能问题?还是生成我自己的密钥是可行的方法?

4

2 回答 2

0

保持一个 ObjectContext / 连接在您的应用程序的运行时间内保持打开状态。EF 不适合批量插入,请使用 SqlCeResultSet 以获得最大性能。

于 2011-07-10T21:11:08.823 回答
0

我决定采用“生成我自己的密钥”的方式作为解决方法。我将密钥生成所需的功能添加到我的 DBContext 类中。

如果 Microsoft 对此行为进行更改,我会切换回自动生成。

于 2011-07-11T14:49:17.070 回答