如何提高EF实体链接的性能

本文关键字:性能 链接 实体 何提高 EF | 更新日期: 2023-09-27 18:15:36

我使用asp.net 4 c#和EF 4。

我正在分析我的应用程序。我有这个代码,结果很昂贵。

我想知道你是否知道更好的写法。我需要加快速度。

            string htmlhead = context.CmsOptions.SingleOrDefault(op => op.OptionId == 7).Value;
            if (htmlhead != null)
                uxHtmlHead.Text = htmlhead;
            else
                uxHtmlHead.Text = "No Html Head.";

感谢

有用的文章http://weblogs.asp.net/zeeshanhirani/archive/2010/09/20/which-one-is-faster-singleordefault-or-firstordefault.aspx

如何提高EF实体链接的性能

使用FirstOrDefault()…一旦找到一个结果,它就会退出。

另一方面,SingleOrDefault()在整个集合中搜索单个结果,如果为查询

找到多个结果,则抛出异常。

在优化实体框架查询时,您可以采取一些基本步骤。

你可以在这里找到所有选项的列表。

对于你的情况,我的建议是:

  • NoTracking。您只为了获取值而检索实体。不是为了改变它,所以你不需要改变跟踪
  • 预编译您的查询。这是一个简单的步骤,它真的给你一个性能提升返回正确的数据量。你选择整个实体只是为了检索它的value属性。如果你只选择值属性更少的数据将从SQL Server返回(顺便说一句,你的代码将抛出一个空异常,如果一个CmsOption不能被发现,因为第一/单一-OrDefault部分。如果你真的知道应该至少有一个实体,请删除OrDefault部分)

如果您正在使用Visual Studio Premium,您可以将此代码放入单元测试中,然后对单元测试进行配置。在每次更改之后,您可以比较报告,以确保您正在改进性能。