一个Linq效率(智能程度)的测试

简介:

今天做了一次Linq的测试,代码如下:

None.gif            DataClasses1DataContext db =  new DataClasses1DataContext();
None.gif            var a = from blog  in db.Blogs
None.gif                    where blog.Channel == db.Channels.Single<Channel>(channel => channel.Title == "生活频道")
None.gif                          && blog.BlogClass == db.BlogClasses.Single<BlogClass>(c => c.Title == "默契")
None.gif                    select blog;
None.gif             this.Title = a.Count<Blog>().ToString();

这是个较为复杂的查询,包含两个跨表联合,更重要的是,最终需要的是Count,而并不是整个Blog列表,考验的是Linq的智能程度。

用Sql profile分析,得到对应的SQL是:

None.gif exec sp_executesql N ' SELECT COUNT(*) AS [value]
None.gifFROM [dbo].[Blog] AS [t0]
None.gifWHERE ([t0].[ChannelID] = ((
None.gif    SELECT [t1].[ChannelID]
None.gif    FROM [dbo].[Channel] AS [t1]
None.gif    WHERE [t1].[Title] = @p0
None.gif    ))) AND ([t0].[BlogClassID] = ((
None.gif    SELECT [t2].[BlogClassID]
None.gif    FROM [dbo].[BlogClass] AS [t2]
None.gif    WHERE [t2].[Title] = @p1
None.gif    )))
', N ' @p0 nvarchar(4),@p1 nvarchar(2) '@p0  = N ' 生活频道 '@p1  = N ' 默契 '

从上面的SQL可以看出,Linq对代码的分析相当到位,最终着眼于Count,这应该也是得益于Lazy Load。而多表联合查询(对于Channel表和BlogClass表)也做得相当好。从这一个查询应该可以说:Linq的智能度已经相当高了,Linq已经远远超出了傻乎乎拼SQL的水平,值得一试!

鸡蛋里面挑骨头的是,BlogClass 其实和Channel有外键联系的,其实有了BlogClass的限制,Channel就可以不需要了,这是代码中故意加入的一个小Bug,可惜Linq没有自动处理这个Bug的能力,还是进行了两次查询,是不是期望太高了?呵呵。

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2007/07/06/807834.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的未来之路:自动化与智能化的融合之旅
随着技术的飞速发展,软件测试领域正经历着一场革命。传统的手动测试方法逐渐让位于更加高效、智能的自动化测试策略。本文将探讨自动化测试工具的演进,以及人工智能如何赋能未来的软件测试实践,提升测试效率和准确性。我们将通过实例分析,了解自动化测试工具的现状,探索AI技术在测试中的应用,并展望未来软件测试的趋势。
37 2
|
23天前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
28 0
|
1月前
|
机器学习/深度学习 边缘计算 人工智能
软件测试的演化之路:从手动到智能化
【8月更文挑战第6天】在数字化浪潮不断推进的今天,软件测试作为保障软件质量的重要环节,经历了从原始的手动测试到现在的智能化测试的转变。本文将探讨这一演变过程,分析其背后的驱动力和未来趋势,以及这些变化给软件产业带来的深远影响。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的未来:自动化与智能化的融合
随着科技的发展,软件测试领域正在经历一场革命。传统的手动测试方法正逐渐被自动化和智能化技术所取代。本文将探讨这一趋势如何影响软件测试的未来,以及它为提高软件质量和开发效率带来的机遇。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:自动化与智能化的交汇点
随着技术的迅猛发展,软件测试领域正站在一个崭新的十字路口。本文将深入探讨自动化测试和人工智能(AI)如何共同塑造软件测试的未来,提升测试效率与准确性。通过分析当前趋势和未来预测,我们将揭示这些技术如何影响测试策略、工具选择以及质量保证流程,进而推动软件开发的整体进步。
53 1
|
2月前
|
人工智能 运维 自然语言处理
操作系统智能助手OS Copilot体验与测试结果
OS Copilot是基于大模型构建的操作系统智能助手,支持命令行自然语言问答、辅助命令执行、阿里云CLI调用、系统运维和调优等功能,帮助您更好地使用Alibaba Cloud Linux,提高Alibaba Cloud Linux的使用效率。
操作系统智能助手OS Copilot体验与测试结果
|
3月前
|
人工智能 分布式计算 DataWorks
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
2024年5月31日,在中国信通院组织的首批数据智能平台专项测试中,阿里云数据智能平台解决方案(MaxCompute、DataWorks、PAI)顺利完成测试。
215 5
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
|
2月前
|
机器学习/深度学习 数据采集 人工智能
探索自动化测试的边界:从脚本到智能
在软件开发领域,自动化测试已成为确保产品质量和提升开发效率的关键因素。随着人工智能和机器学习技术的飞速发展,传统的自动化测试方法正面临重大的变革。本文将从多个角度分析自动化测试的现状与未来趋势,探讨如何通过集成先进的技术手段优化测试流程,并预测自动化测试领域的发展方向。
39 1
|
1月前
|
机器学习/深度学习 人工智能 数据挖掘
探索自动化测试的边界:从脚本到智能
在软件测试领域,自动化测试一直是提高测试效率与质量的重要工具。随着技术的发展,自动化测试也在不断进化,从简单的脚本录制回放,到现在结合人工智能的智能测试。本文将探讨自动化测试的发展路径,以及如何通过智能化提升测试的深度和广度,同时分析面临的挑战和未来的可能性。
|
2月前
|
机器学习/深度学习 人工智能 供应链
探索自动化测试的边界:从脚本到智能
在软件质量保障的竞技场上,自动化测试以其高效、一致性和可重复性的特点,成为提升开发流程效率的关键工具。本文将深入自动化测试的核心,探讨它如何从简单的脚本化任务,演变为一个集成了机器学习、人工智能和持续集成/持续部署(CI/CD)的复合型解决方案。我们将一起见证自动化测试如何突破传统边界,实现从线性脚本到自适应智能体的飞跃,并在此过程中重塑软件开发的未来。