我可以在我的数据库和 EF 上使用 View 来提高只读性能吗?

Posted

技术标签:

【中文标题】我可以在我的数据库和 EF 上使用 View 来提高只读性能吗?【英文标题】:Can I improve read only perfomance using View on my DataBase and EF? 【发布时间】:2011-08-02 16:21:04 【问题描述】:

我使用 SQL 2008 Linq 和实体框架 4。

在我的数据库中,我有一个名为 CmsContents 的表。 这张表有很多字段,比如TitleCategoryId,还有一些很重的字段,比如htmlCode

在我的前端的许多部分中,我只需要显示我的表 CmsContents 的 某些字段,例如仅按下降顺序显示 TitleCategoryId

问题: 我可以使用 Table CmsContents 的部分视图(不包括归档:HtmlCode)来提高只读性能吗? 所以我会将此视图映射到我在 EF 中的模型并使用 Linq 查询以在前端获得所需的结果。

我的目标是提高性能并避免在我的 Linq to Entity 查询中使用 AnonymousType。

让我知道你的想法。

感谢您对此的帮助。

【问题讨论】:

【参考方案1】:

您可以只选择您需要的字段,这样您就不需要加载不必要的数据。它不必是匿名的。 示例:

var result = from c in dbContext.CmsContents select new CmsContent
Title = c.Title, CategoryId = c.CategoryId

编辑:请在您的代码上尝试此操作,如果您的 .CmsContents 是 IEnumerables,这应该可以工作,我认为它是。

    var contents = context.CmsGroupsTypes
.Single(g => g.GroupTypeId == 1)
.CmsContents
.Select(cms=>new CmsContentTitle = cms.Title, CategoryId = cms.CategoryId)

【讨论】:

感谢您的评论,我以前从未见过您的语法,听起来很酷。我如何在我的代码上应用相同的内容? var content = context.CmsGroupsTypes.Single(g => g.GroupTypeId == 1).CmsContents;

以上是关于我可以在我的数据库和 EF 上使用 View 来提高只读性能吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac 上使用 dotnet ef 核心搭建脚手架

EF6 事务

仅在 EF4 代码上创建数据库后更改模型

为啥 LINQ 在我的查询中使用错误的数据类型,而它在 EF 架构中被正确声明?

带有 Ntier 的实体框架

EF 更新未更新 GridView