如何提高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
使用FirstOrDefault()
…一旦找到一个结果,它就会退出。
另一方面,SingleOrDefault()
在整个集合中搜索单个结果,如果为查询
在优化实体框架查询时,您可以采取一些基本步骤。
你可以在这里找到所有选项的列表。
对于你的情况,我的建议是:
- NoTracking。您只为了获取值而检索实体。不是为了改变它,所以你不需要改变跟踪 预编译您的查询。这是一个简单的步骤,它真的给你一个性能提升返回正确的数据量。你选择整个实体只是为了检索它的value属性。如果你只选择值属性更少的数据将从SQL Server返回(顺便说一句,你的代码将抛出一个空异常,如果一个CmsOption不能被发现,因为第一/单一-OrDefault部分。如果你真的知道应该至少有一个实体,请删除OrDefault部分)
如果您正在使用Visual Studio Premium,您可以将此代码放入单元测试中,然后对单元测试进行配置。在每次更改之后,您可以比较报告,以确保您正在改进性能。