在用了LINQ語法之後的一個月,我幾乎把SQL語法全部拋到腦後了,不過

LINQ好用歸好用,但是實際上操作資料庫的還是SQL語法,如果不知道LINQ語法

編譯過後產生怎樣的SQL語法,一不小心效能就會變差,所以今天來記錄三種查詢

LINQ所轉換的SQL語法。

第一種:

參考自:ADO.Net Entity Framework : (一) 查詢執行時的SQL語法

第一種方法應該只適用在Entity Framework,Linq to Sql有沒有這個或類似的方法我還沒去試

1 NorthwindEntities db = new NorthwindEntities();
2 var category = db.Customers.Where(p => p.CompanyName.Contains("B")) as ObjectQuery;
3 return Content(category.ToTraceString());

範例我是用北風資料庫的Customers資料表,然後將查詢語句轉成ObjectQuery

命名空間:using System.Data.Objects;

MSDN資料:http://msdn.microsoft.com/zh-tw/library/system.data.objects.objectquery.aspx

就可以利用ToTraceString() 方法來將語法轉換成SQL語法

(我的範例是用MVC做的,所以我直接return Content(SQL語法)) 結果如下:

第二種:

利用SQL Profiler來查詢執行時的SQL語法

首先可以在SQL Server Management Studio的工具中找到SQL Server Profiler

點左上角的新增追蹤

在事件選取範圍頁籤中可以設定要查詢的資料

如果想更精確的鎖定監看某個資料庫,可以點"顯示所有資料行" 然後點"資料行篩選"

點選左邊的DatabaseName,然後點開右邊的類似,我要監看的是Northwind資料庫,就輸入Northwind

然後將程式碼改成:

1 NorthwindEntities db = new NorthwindEntities();
2 var category = db.Customers.Where(p => p.CompanyName.Contains("B"));
3 return View(category);

程式執行時,就可以在SQL Profiler中抓到對SQL Server所下達的指令

另外這邊提供一個小技巧,在web.config的連線字串中,加入一小段話:

在連線字串的後面 加上 ;Application Name=”XXX”,之後用SQL Profiler的時候就可以看到

ApplicationName的欄位中有設定的名字,這可以幫助在查詢時很快的知道是從哪下達的指令。

第三種方法:

是利用LINQPad這個軟體來查詢

參考自:LINQPad 有在用LINQ不可或缺的好工具

官網:http://www.linqpad.net/

下載回來執行之後,有很多種使用方式,我這邊就直接用我建立的edmx檔來操作

在左邊選新增連線

然後選擇用自己的data context ,我用的是entity framework

接著選擇檔案,按Browse,選自己專案底下的bin資料夾中的.dll檔

他就會找出組件中所建立的edmx

設定完之後,就會看到我們建立的edmx所拉的table出現在左邊的框框中

接著呢,就直接在右邊下語法,就可以看到結果,也可以看到SQL指令囉

查看LINQ Expression編譯後的SQL語法(转)的更多相关文章

  1. SQL 語法

    查詢 Sql = ("SELECT A1, A2, A5, A4 FROM Table1 ") 筆數 Sql = ("Select COUNT(*) From TW01. ...

  2. 查看Linq to Sql生成的sql语句(转)

    查看Linq to Sql生成的sql语句   在控制台项目中,比较简单,直接db.Log = Console.Out;就OK了 但是在其他项目中,需要处理如下: StreamWriter sw = ...

  3. [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...

  4. MAC下反編譯安卓APK

    所需工具: 1.apktool   http://ibotpeaches.github.io/Apktool/  (配置說明)       https://bitbucket.org/iBotPeac ...

  5. [Linq Expression]练习自己写绑定

    源代码:TypeMapper.zip 背景 项目中,我们会经常用到各种赋值语句,比如把模型的属性赋值给UI,把视图模型的属性拷贝给Entity.如果模型属性太多,赋值也会变成苦力活.所以,框架编程的思 ...

  6. CentOS 7 編譯qBittorrent Web UI安裝指南

    前言 以下是安装qBittorrent教学. 适用于CentOS7或更新版本 适用于qBittorrent4.1.5或更新版本 安裝須知 qBittorrent基于libtorrent,所以必须先安装 ...

  7. 【转】編譯Ogre1.9 IOS Dependencies及Ogre Source步驟及相關注意事項…

    http://makedreamvsogre.blogspot.tw/2014/01/ios-dependenciesogre-source.html 可能有人會想問我為什麼要自行編譯IOS Depe ...

  8. llvm學習(二)————llvm編譯與環境構建

    本文由博主原创,转载请注明出处(保留此处和链接): IT人生(http://blog.csdn.net/robinblog/article/details/17339027) 在2011十月份的时候, ...

  9. C 語言中的編譯指示 (Pragma)

    編譯指示 #pragma 是用來告知編譯器某些特殊指示,例如不要輸出錯誤訊息,抑制警告訊息,或者加上記憶體漏洞檢查機制等.這些指示通常不是標準的 C 語言所具備的,而是各家編譯器廠商或開發者所制定的, ...

随机推荐

  1. android studio svn 创建分支

    创建分支或标签 从哪里复制 工作副本 用这个变体去创建分支,并带着当地的改变.通常,服务项将被 添加带历史 , 不仅仅只有目标目录. 每个不同于根的版本文件 ,将被指定的复制.它推荐 去更新 工作副本 ...

  2. BZOJ.2716.[Violet3]天使玩偶(CDQ分治 坐标变换)

    题目链接 考虑对于两个点a,b,距离为|x[a]-x[b]|+|y[a]-y[b]|,如果a在b的右上,那我们可以把绝对值去掉,即x[a]+y[a]-(x[b]+y[b]). 即我们要求满足x[b]& ...

  3. 《linux/unix设计思想》读后感

    <linux/unix设计思想>这本书,觉得书的大部分内容都闲扯的太远了,以下简单的总结下本书的核心,帮助大家节省时间和金钱. linux/unix设计思想: 1) 程序应该小而专一,程序 ...

  4. HDU5320 : Fan Li

    考虑枚举左端点i,则随着右端点的右移,一共只有$O(\log n)$种不同的gcd取值.所以首先通过ST表+二分查找预处理出$O(n\log n)$个四元组(x,i,l,r),表示左端点为i,右端点取 ...

  5. codeforces 596E Wilbur and Strings

    题意:一个矩阵上面有0~9的数字,可以从任意一个格子出发,每次根据格子上的数字会前进到另一个格子(或原地不动),现在给出q个数位串,问是否有走法可以取出这个串(走到格子上的时候可以不取). 思路:发现 ...

  6. HDU 5909 Tree Cutting 动态规划 快速沃尔什变换

    Tree Cutting 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5909 Description Byteasar has a tree T ...

  7. 解决Android LogCat 输出乱码的问题(转)

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的. 可以使用adb的logcat 命令来查看系统日志缓冲区的内容,但是在实际操作时,会发现在C ...

  8. OPTIMIZE TABLE ipc_analysisdatasyn, ipc_analysisdatatkv,ipc_autoupdateset, ipc_equipmentwaring,ipc_fguid, ipc_receivedata, ipc_senddata, tb_qualitativeanalysis, tb_quantifyresult, tb_quantifyresulthis

    OPTIMIZE TABLE ipc_analysisdatasyn, ipc_analysisdatatkv,ipc_autoupdateset, ipc_equipmentwaring,ipc_f ...

  9. HP Notebook PCs - Updating the BIOS

    HP Notebook PCs - Updating the BIOS Updating the BIOS Updating the BIOS when Windows does not start ...

  10. .Net Discovery 系列之二--string从入门到精通(下)

    前两节我们介绍了string的两个基本特性,如果你觉得你已经比较全面的了解了string,那么就来看看这第3.4两节吧. 三.有趣的比较操作  在第一节与第二节中,我们分别介绍了字符串的恒定性与与驻留 ...