在用了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. 4951: [Wf2017]Money for Nothing 决策单调性 分治

    Bzoj4951:决策单调性 分治 国际惯例题面:一句话题面:供应商出货日期为Ei,售价为Pi:用户收购截止日期为Si,收购价格为Gi.我们要求max((Si-Ej)*(Gi-Pj)).显然如果我们把 ...

  2. 马士兵hadoop第三课:java开发hdfs

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  3. spring boot 集成 druid

    写在前面 因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能是数据库连接的问题, ...

  4. 你的产品适不适合做微信小程序?你需要这篇产品逻辑分析

      自2017年1月9日张小龙宣布万众瞩目的“微信小程序”正式上线了.以名字看,感觉像是突出了“将你的程序接入微信”的意思. 我们此前分析过微信的功能迭代节奏:一般微信重要的功能规划周期,大约会在在9 ...

  5. STM32F4 How do you generate complementary PWM Outputs?

    How do you generate complementary PWM Outputs? I would like to generate complementary PWM Outputs wi ...

  6. tomcat开启SSL8443端口的方法

    参考文献: http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html http://blog.sina.com.cn/s/blog_682b5aa1 ...

  7. 数据库数据格式化之Kettle Spoon

    前言 现在的数据库种类越来越多,数据库备份的格式也越来越复杂,所以数据格式化一直是一个老生常谈的问题.据库备份文件格式那么多,既有SQL的,也有BAK的,还有TXT的等.数据库种类也有很多,MySQL ...

  8. ASP.NET Web API中通过ETag实现缓存

    通常情况下Server是无状态的,在ASP.NET Web API中,我们可以让服务端响应体中产生ETag属性,起到缓存的作用.大致实现原理是: 1.服务端的响应体中返回一个ETag属性2.客户端通过 ...

  9. 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式

    在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var ...

  10. 创建 HelloWorld 项目

    在 Eclipse 的导航栏中点击 File →New →Android Application Project ,此时会弹出创建 Android 项目的对话框.其中 Application Name ...