成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何得到EF查詢生成的SQL

運維 數據庫運維
最近挺忙的,只能為大家帶來一些使用EF的小技巧。有關EF4.1的使用與探索將在之后一段時間為大家奉上。今天為大家帶來如何得到EF查詢所生成的SQL。

最近挺忙的,只能為大家帶來一些使用EF的小技巧。有關EF4.1的使用與探索將在之后一段時間為大家奉上。今天為大家帶來如何得到EF查詢所生成的SQL。

在EF 4和EF 3.5 SP1中,我們可以使用ToTraceString()方法得到EF查詢所生成的SQL。

  1. using (var context = new TestDBEntities())  
  2. {  
  3.     var query = from p in context.Parents  
  4.                 where p.Name == "Lingzhi"  
  5.                 select p;  
  6.  
  7.     ObjectQuery<Parent> parents = query as ObjectQuery<Parent>;  
  8.     if (parents != null)  
  9.     {  
  10.         string sql = parents.ToTraceString();  
  11.     }  
  12. }  

這里所生成的SQL為:

  1. SELECT   
  2. [Extent1].[ParentID] AS [ParentID],   
  3. [Extent1].[NameAS [Name]  
  4. FROM [dbo].[Parent] AS [Extent1]  
  5. WHERE N'Lingzhi'=[Extent1].[Name

在EF 4.1中,我們可以直接調用DbQuery<>的ToString()方法得到所生成的SQL。

  1. using (var context = new MyDbContext())  
  2. {  
  3.     var people = from p in context.People  
  4.                  where p.PersonID > 100  
  5.                  select p;  
  6.  
  7.     string sql = people.ToString();  
  8. }  

所生成的SQL是:

  1. SELECT   
  2. [Extent1].[PersonID] AS [PersonID],   
  3. [Extent1].[NameAS [Name]  
  4. FROM [dbo].[People] AS [Extent1]  
  5. WHERE [Extent1].[PersonID] > 100  

大家應該已經猜到,這里的ToString()方法其實也就是調用了ObjectQuery<>的ToTraceString()方法。DbQuery<>.ToString() ==> System.Data.Entity.Internal.Linq.InternalQuery<>.ToString()方法,此方法在.NET Reflector得到的實現是這樣的:

  1. public override string ToString()  
  2. {  
  3.     return this._objectQuery.ToTraceString();  
  4. }  

以上討論的方法都只能得到普通Select查詢所生成的SQL,像其他Loading啊,更新啊,刪除啊,添加等所生成的SQL并不能得到。EF并不像LINQ to SQL有DataContext.Log可以得到所有被執行的SQL命令。要實現這樣的功能,需要自己拓展一下EF的data provider,比如這個例子:http://code.msdn.microsoft.com/EFProviderWrappers-c0b88f32。(可能的話,以后會為大家詳細介紹下這個很酷的provider)

當然我們也可以使用Visual Studio 2010 Ultimate所帶的IntelliTrace功能或者SQL Server Profiler來得到EF所生成的SQL。

不過這兩種方法只針對SQL Server和對應的T-SQL。

原文鏈接:http://www.cnblogs.com/LingzhiSun/archive/2011/05/05/EF_Trick5.html

【編者推薦】

  1. DataTable導致約束未啟用
  2. Oracle的安全標記算不算bug
  3. SQL Server數據庫遷移偏方
  4. PDF.NET數據開發框架實體類操作實例之在PostgreSQL中操作
  5. 優化你的DiscuzNT,讓它跑起來
責任編輯:艾婧 來源: 博客園
相關推薦

2013-09-08 22:40:38

EF Code Fir數據查詢架構設計

2011-04-06 10:53:36

MySQL

2017-09-07 16:20:39

SQL查詢語句查詢優化

2022-07-28 09:13:30

MySQL數據庫

2010-11-25 15:36:09

MySQL查詢結果集

2010-07-09 11:34:51

SQL Server用

2024-09-13 17:06:54

EF Core分組查詢

2020-07-13 07:10:09

SQLSQL語句查詢

2016-08-23 13:35:22

MVCEFNuGet

2024-04-10 12:56:00

C#批量插入開發

2010-12-21 09:47:45

SQL Server

2010-07-19 16:52:23

SQL Server

2010-09-26 13:56:43

SQL遠程查詢

2010-09-26 13:40:14

SQL查詢

2016-12-15 09:58:26

優化SQL高性能

2017-07-12 13:04:23

數據庫SQL查詢執行計劃

2020-09-01 07:00:00

數據備份數據庫

2009-05-31 09:25:03

SQL Server腳本數據庫管理

2011-07-06 15:47:29

SQL Server分區

2010-09-09 10:32:24

SQL函數拼音
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线资源 | 欧美国产日韩精品 | 成人av免费 | 青青草华人在线视频 | 中文字幕av免费 | 欧美日韩一区二区电影 | 亚洲女优在线播放 | 久久久久国产精品一区 | 在线视频91 | 中文字幕在线观看一区 | 久久精品日产第一区二区三区 | 成av在线 | 欧美aⅴ| 精品欧美乱码久久久久久 | 91精品国产91久久久久福利 | 日韩成人在线网址 | 亚洲v日韩v综合v精品v | 国产99久久精品 | 午夜天堂精品久久久久 | 国产高清在线观看 | 亚洲一区二区三区在线免费观看 | 国产精品毛片无码 | 亚洲成人免费电影 | 欧美日韩国产在线观看 | 国产一区二区三区在线看 | 欧美精品黄| 精品国产91亚洲一区二区三区www | 成人国产精品久久久 | 日日骑 | 久久不射电影网 | 九九在线精品视频 | 免费亚洲视频 | 99久久久久久99国产精品免 | 日韩欧美一区二区三区 | 在线播放亚洲 | 99热热热热 | 男女羞羞视频在线观看 | 日韩中文字幕视频在线观看 | 91在线看网站 | 中文字幕亚洲一区 | www.一区二区三区 |