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)执行完成后会在C盘的根目下会创建一个Log.txt的文件,打开文件可以看到生成了如下的SQL语句:
{
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();
}
}
Code8:
SELECT [t0].[Id], [t0].[Title], [t0].[Author], [t0].[PubDate], [t0].[Description]这个功能虽然使用起来非常的简单,只要指定Log属性就可以了,但是它却非常的有用,尤其在调试程序的程序,我们可以清楚的知道在数据库中执行了什么样的操作。
FROM [Posts] AS [t0]
ORDER BY [t0].[PubDate]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8