[转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句
在搜索使用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语句的更多相关文章
- VB.NET中使用Linq TO SQL添加数据后获得自增长列ID
VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...
- 从数据库中查询所有表及所有字段的SQL语句
从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...
- [转载]在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 ...
- mysql 中查询一个字段是否为null的sql
查询mysql数据库表中字段为null的记录: select * 表名 where 字段名 is null 查询mysql数据库表中字段不为null的记录: select * 表名 where 字段名 ...
- SQL Server 从数据库中查询去年的今天的数据的sql语句
因为最近的项目的一个小功能需要实现当前数据和历史的今天做一个对比.在网上也查了很久,很多都是实现一个月内的,一年内的所有数据,昨晚突然就找到了下面的实现方法,在SQL Server2008中试了一下, ...
- 表中查询重复的数据,如何通过sql语句查询?
1.最直观的思路:要知道所有名字有重复人资料,首先必须知道哪个名字重复了:select name from emp group by name having count(*)>1所有名字重复人的 ...
- Moq中判断方法是否被执行时,参数中有列表的情况
如果参数中有列表,列表项为引用类型时,则会判断列表项是否为同一引用 列表本身不判断
- 在VB中使用Linq To SQLite注意事项
昨天使Linq To SQLite 支持VB,今天在VB中写了几条Linq语句,发现了几个问题: 1.在Linq To SQLite中的Linq语句查询后并不是得到的匿名数据类,而是将Linq转换为S ...
- Unity3D C#中使用LINQ查询(与 SQL的区别)
学过SQL的一看就懂 LINQ代码很直观 但是,LINQ却又跟SQL完全不同 首先来看一下调用LINQ的代码 int[] badgers = {36,5,91,3,41,69,8}; var skun ...
随机推荐
- Hadoop configration类分析
configration这个类是分析hadoop源代码一个很好地入口. 先从需求说起.对于一个大型的文件系统,基于配置文件可以增强灵活性.congfigration类就是为了管理配置文件的. 配置文件 ...
- .Net中的各种序列化
我们知道将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本这正是数据持久化所要做的.而且,不同应用程序之间的通讯需要相互传输数据.那么序列化和反序列化正是为此而生. 序列化和反序列化 所谓 ...
- SPFile的使用
转:http://blog.csdn.net/pclzr/article/details/7591741 SPFile对应于SharePoint对象模型中的文件,它的使用方法与SPFolder类大致相 ...
- hihoCoder 1385 A Simple Job
#1385 : A Simple Job 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Institute of Computational Linguistics (I ...
- java web 学习十六(JSP指令)
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- spring中的BeanFactory与ApplicationContext的作用和区别?
BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂, ...
- Mysql 多表联合查询效率分析及优化
1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JO ...
- E asy Boo t 6.51 启动易 制作启动光盘的软件(附注册码)
内建ISO文件生成器,可直接生成可启动ISO文件,并支持N合1优化. -------中文版注册码------- 用户名:中华人民共和国 注册码:2898-5448-5603-BB2D -------英 ...
- codeforces 696C PLEASE 概率dp+公式递推+费马小定理
题意:有3个杯子,排放一行,刚开始钥匙在中间的杯子,每次操作,将左右两边任意一个杯子进行交换,问n次操作后钥匙在中间杯子的概率 分析:考虑动态规划做法,dp[i]代表i次操作后的,钥匙在中间的概率,由 ...
- 获取json中字段,判断是否有想要的key
if(json.containsKey("key")){ String refundSid = json.getString("key"); } 如果也要判断v ...