假设我有一个模型,Article
它有大量的列并且数据库包含超过 100,000 行。如果我做类似var articles = db.Articles.ToList()
的事情是为数据库中的每篇文章检索整个文章模型并将其保存在内存中,对吗?
因此,如果我正在填充一个仅显示条目日期及其标题的表,是否有办法使用实体框架仅从数据库中检索这些列,它会更有效吗?
据此,_
在对象上下文中跟踪返回的对象需要成本。检测对象的更改并确保对同一逻辑实体的多个请求返回同一对象实例需要将对象附加到 ObjectContext 实例。如果您不打算对对象进行更新或删除并且不需要身份管理,请考虑在执行查询时使用 NoTracking 合并选项。
看起来我应该使用NoTracking
,因为数据没有被更改或删除,只显示。所以我的查询现在变成了var articles = db.Articles.AsNoTracking().ToList()
. 我还应该做其他事情来提高效率吗?
我的另一个问题是,根据这个答案.Contains(...)
,在处理大型数据库时使用会导致性能大幅下降。用于搜索大型数据库中的条目的推荐方法是什么?