我目前正在开发一个使用实体框架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)]并实现自己的密钥生成(作为一种简单的变通方法),性能就会回到第一个实现的水平。
这是一个已知的问题吗?有什么方法可以解决这个性能问题吗?或者生成我自己的密钥是可行的吗?
发布于 2011-07-11 22:49:17
我决定采用“生成我自己的密钥”的方式作为变通办法。我向我的DBContext类添加了生成密钥所需的特性。
如果Microsoft更改了此行为,我将切换回自动生成。
发布于 2011-07-11 05:11:09
在应用程序的生命周期内保持ObjectContext /连接处于打开状态。EF对于批量插入不是理想的,对于最大性能使用SqlCeResultSet。
https://stackoverflow.com/questions/6642274
复制相似问题