在搜索使用LINQ TO SQL 添加数据后获得自增长ID的方法时,发现C#可以使用DebuggerWritter把使用Linq to SQL执行的SQL语句显示到即时窗口,于是在网上搜索到在VB.NET下实现的方法,共享给大家:

1、首先在项目内添加新类,命名为:DebuggerWritter.vb

2、输入代码后保存:

Imports System.Diagnostics
Imports System.Globalization
Imports System.IO
Imports System.Text ''' <summary>
''' Implements a <see cref="TextWriter"/> for writing information to the debugger log.
''' </summary>
''' <seealso cref="Debugger.Log"/>
Public Class DebuggerWriter
Inherits TextWriter
Private _isOpen As Boolean
Private Shared _encoding As UnicodeEncoding
Private ReadOnly _level As Integer
Private ReadOnly _category As String ''' <summary>
''' Initializes a new instance of the <see cref="DebuggerWriter"/> class.
''' </summary>
Public Sub New()
Me.New(, Debugger.DefaultCategory)
End Sub ''' <summary>
''' Initializes a new instance of the <see cref="DebuggerWriter"/> class with the specified level and category.
''' </summary>
''' <param name="level">A description of the importance of the messages.</param>
''' <param name="category">The category of the messages.</param>
Public Sub New(ByVal level As Integer, ByVal category As String)
Me.New(level, category, CultureInfo.CurrentCulture)
End Sub ''' <summary>
''' Initializes a new instance of the <see cref="DebuggerWriter"/> class with the specified level, category and format provider.
''' </summary>
''' <param name="level">A description of the importance of the messages.</param>
''' <param name="category">The category of the messages.</param>
''' <param name="formatProvider">An <see cref="IFormatProvider"/> object that controls formatting.</param>
Public Sub New(ByVal level As Integer, ByVal category As String, ByVal formatProvider As IFormatProvider)
MyBase.New(formatProvider)
Me._level = level
Me._category = category
Me._isOpen = True
End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
_isOpen = False
MyBase.Dispose(disposing)
End Sub Public Overloads Overrides Sub Write(ByVal value As Char)
If Not _isOpen Then
Throw New ObjectDisposedException(Nothing)
End If
Debugger.Log(level, category, value.ToString())
End Sub Public Overloads Overrides Sub Write(ByVal value As String)
If Not _isOpen Then
Throw New ObjectDisposedException(Nothing)
End If
If value <> Nothing Then
Debugger.Log(level, category, value)
End If
End Sub Public Overloads Overrides Sub Write(ByVal buffer As Char(), ByVal index As Integer, ByVal count As Integer)
If Not _isOpen Then
Throw New ObjectDisposedException(Nothing)
End If
If buffer = Nothing OrElse index < OrElse count < OrElse buffer.Length - index < count Then
' delegate throw exception to base class
MyBase.Write(buffer, index, count)
End If
Debugger.Log(level, category, New String(buffer, index, count))
End Sub Public Overloads Overrides ReadOnly Property Encoding() As Encoding
Get
If _encoding Is Nothing Then
_encoding = New UnicodeEncoding(False, False)
End If
Return _encoding
End Get
End Property Public ReadOnly Property Level() As Integer
Get
Return Level
End Get
End Property Public ReadOnly Property Category() As String
Get
Return _category
End Get
End Property
End Class

3、在项目中添加对System.Transactions的引用:

4、在Linq TO SQL执行处添加代码:

Dim tran As New Transactions.TransactionScope
Using tran
db.Log = New DebuggerWriter
db.SubmitChanges()
tran.Dispose()
End Using

5、在VS.NET中打开“即时窗口”

6、运行程序,即可在“即时窗口”中看到转换后的SQL代码:

最后注意:这种方法运行程序后执行的操作只反映在“即时窗口”中,并不会真正的更改数据库内容,所以在调试完成后请将调试代码删除。

[转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句的更多相关文章

  1. VB.NET中使用Linq TO SQL添加数据后获得自增长列ID

    VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...

  2. 从数据库中查询所有表及所有字段的SQL语句

    从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...

  3. [转载]在VB.Net中获取COM对象的特定实例(Getting a specific instance of COM object in VB.Net)

    转载:http://www.it1352.com/534235.html 问题: I am writing a Windows Form application in .Net to list all ...

  4. mysql 中查询一个字段是否为null的sql

    查询mysql数据库表中字段为null的记录: select * 表名 where 字段名 is null 查询mysql数据库表中字段不为null的记录: select * 表名 where 字段名 ...

  5. SQL Server 从数据库中查询去年的今天的数据的sql语句

    因为最近的项目的一个小功能需要实现当前数据和历史的今天做一个对比.在网上也查了很久,很多都是实现一个月内的,一年内的所有数据,昨晚突然就找到了下面的实现方法,在SQL Server2008中试了一下, ...

  6. 表中查询重复的数据,如何通过sql语句查询?

    1.最直观的思路:要知道所有名字有重复人资料,首先必须知道哪个名字重复了:select name from emp group by name having count(*)>1所有名字重复人的 ...

  7. Moq中判断方法是否被执行时,参数中有列表的情况

    如果参数中有列表,列表项为引用类型时,则会判断列表项是否为同一引用 列表本身不判断

  8. 在VB中使用Linq To SQLite注意事项

    昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...

  9. Unity3D C#中使用LINQ查询(与 SQL的区别)

    学过SQL的一看就懂 LINQ代码很直观 但是,LINQ却又跟SQL完全不同 首先来看一下调用LINQ的代码 int[] badgers = {36,5,91,3,41,69,8}; var skun ...

随机推荐

  1. CodeForces Round #278 (Div.2) (待续)

    A 这么简单的题直接贴代码好了. #include <cstdio> #include <cmath> using namespace std; bool islucky(in ...

  2. BZOJ2252: [2010Beijing wc]矩阵距离

    题解: 我脑子里都是翔??? bfs一下就行了 我居然还想什么kd tree!真是too naive,,, #include<cstdio> #include<cstdlib> ...

  3. Android 下压缩图片—微弱失真

    Android下压缩图片的方法: 大概能将3M左右的图片压缩到100K左右, 几乎不失真. 代码如下: import java.io.FileNotFoundException; import jav ...

  4. Linux下通过ioctl系统调用来获取和设置网络信息

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...

  5. [转] C#实现自动化Log日志

    qing2005原文地址 C#实现自动化Log日志 在开发项目的时候,我们不免要使用Log记录日志,使用最多的是Log4Net和EntLib Log,在需要记录日志的代码处加入log.Write(日志 ...

  6. [Papers]MHD, $\pi$, Lorentz space [Suzuki, DCDSA, 2011]

    $$\bex \sen{\pi}_{L^{s,\infty}(0,T;L^{q,\infty}(\bbR^3))} +\sen{{\bf b}}_{L^{\gamma,\infty}(0,T;L^{\ ...

  7. Visual Studio 2010中创建ASP.Net Web Service

    转自:http://blog.csdn.net/xinyaping/article/details/7331375 很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net ...

  8. 基于51,人体红外感应和RC522的门禁系统

    总结一下最近学的东西,这两天学的东西,rfid门卡系统终于弄出来来了,这个程序算现在写过的比较满意的程序,大家可以参考参考 主函数: #include<reg52.h> #include& ...

  9. Fedora22(Gnome桌面)安装Chrome

    1.从官网上(http://www.google.cn/chrome/)下载到相对应系统版本的rpm包.这里我的是: google-chrome-stable_current_x86_64.rpm 此 ...

  10. 网页抓取:PHP实现网页爬虫方式小结

    来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...