Mik*_*e Z 4 entity entity-framework-4 entity-framework-4.1 entity-framework-5
我们有一组相当大的相关表,每个表有超过3500万个相关记录。我需要创建几个WCF方法,这些方法将使用一些参数(数据范围,类型代码等)查询数据库并返回相关的结果集(从10到10,000条记录)。
该公司在EF 4.0上进行了标准化,但对4.X开放。我也许可以说服自己移植到5.0,但可能性很小。
使用Entity处理如此大量的记录的最佳方法是什么?我应该创建一组存储的proc并从Entity中调用它们,还是可以在Entity中执行某些操作?
我对数据库没有任何控制权,因此无法拆分表或创建某些物化视图或分区表。
任何输入/想法/建议都将不胜感激。
在工作中,我遇到了类似的情况。我们有一个包含许多表的数据库,其中大多数表包含大约7到1千万条记录。我们使用实体框架来显示数据,但是页面似乎显示得非常慢(例如90到100秒)。甚至在网格上进行排序也需要时间。我得到了任务,看是否可以优化。并且在对它进行分析之后(ANTS探查器),我能够对其进行优化(不到7秒)。
所以答案是肯定的,实体框架可以处理记录的负载(以百万计),但是必须小心
如果您牢记这些内容,则EF应该提供与普通ADO.NET几乎相同的性能(如果不同)。
我对 EF4.1 的经验,代码优先:如果您只需要读取记录(即您不会将它们写回),您将通过针对您的上下文进行更改跟踪来获得性能提升:
yourDbContext.Configuration.AutoDetectChangesEnabled = false;
Run Code Online (Sandbox Code Playgroud)
在加载任何实体之前执行此操作。如果您需要更新加载的记录,您可以随时致电
yourDbContext.ChangeTracker.DetectChanges();
Run Code Online (Sandbox Code Playgroud)
在调用 SaveChanges() 之前。
归档时间: |
|
查看次数: |
5925 次 |
最近记录: |