商讯信箱
用户名: @
密  码:   注册|忘记密码
登录
个人用户经销商
您的位置:首页 > 技术频道 > 正文

4. 记录生成SQL语句

    上一篇(创建你的第一个LINQ to SQL应用程序)文章结尾,我曾经提出过一个问题,就是如何知道查询句法在执行后相当于执行了什么样的T-SQL?本篇文章的这一节,你将得到答案。在DataContext中,提供了记录生成SQL的功能,通过DataContext提供了一个属性Log,可以指定一个TextWriter对象给DataContext,它将会以日志的形式记录执行过程中所产生的SQL语句。
Code6:
public TextWriter Log { get; set; }
   如果我们执行如下代码片段:
   Code7:
static void Main(string[] args) 
{
BlogDataContext db = new BlogDataContext();
using (StreamWriter sw = new StreamWriter(@"c:\log.txt", true))
{
db.Log = sw;

IEnumerable<Post> posts = from p in db.Posts
orderby p.PubDate
select p;
foreach (var post in posts)
{
Console.WriteLine(post.Title);
}

Console.ReadLine();
}
}
   执行完成后会在C盘的根目下会创建一个Log.txt的文件,打开文件可以看到生成了如下的SQL语句:
   Code8:
SELECT [t0].[Id], [t0].[Title], [t0].[Author], [t0].[PubDate], [t0].[Description]
FROM [Posts] AS [t0]
ORDER BY [t0].[PubDate]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8
    这个功能虽然使用起来非常的简单,只要指定Log属性就可以了,但是它却非常的有用,尤其在调试程序的程序,我们可以清楚的知道在数据库中执行了什么样的操作。
1 2 3 4 5
【内容导航】
第1页: 概述 第2页: 创建强类型的DataContext
第3页: 记录生成SQL语句 第4页: 执行SQL语句
第5页: Create、Drop数据库
©版权所有。未经许可,不得转载。
[责任编辑:胡铭娅]
[an error occurred while processing this directive]