It is very common that may come in your mind that, how we can see SQL query being generated at the back end for LINQ query.
Assume you have a LINQ as below,
![]()
If you want to view SQL query generated for above LINQ on console screen you need to add just one line of code as below,
![]()
If you closely examine log it is a property in DataContext class and it is of type textwriter.
![]()
Since it is of type text writer you can save it to a text file as well. If you want to log you need to follow below steps.
Step1
Create a class overriding System.IO.TextWriter class.
![]()
Step 2
Configure log file in configuration
![]()
Step 3
Log the query as below
![]()
Full source code of above explanation is given below ,
01 | using System; |
02 | using System.Collections.Generic; |
03 | using System.Linq; |
04 | using System.Text; |
05 | using System.IO; |
06 |
07 | namespace Relatedtable |
08 | { |
09 | class Program |
10 | { |
11 |
12 | static DataClasses1DataContext context; |
13 | static void Main(string[] args) |
14 | { |
15 | context = new DataClasses1DataContext(); |
16 | context.Log = Console.Out; |
17 | context.Persons.InsertOnSubmit( |
18 | new Person |
19 | { |
20 | FirstName = "The ", |
21 | LastName = "Poet", |
22 | HireDate = DateTime.Now, |
23 | OfficeAssignment = new OfficeAssignment |
24 | { |
25 | Location = "Jamshedpur" |
26 | } |
27 |
28 | } |
29 | ); |
30 | context.Log = new LogLINQSQL(); |
31 | context.SubmitChanges(); |
32 | context.Log = Console.Out; |
33 | Console.ReadKey(true); |
34 |
35 | var result = from r in context.Persons |
36 | where r.FirstName=="Dhananjay" |
37 | select r ; |
38 | context.Log = Console.Out; |
39 | foreach (var r in result) |
40 | { |
41 | Console.WriteLine(r.FirstName); |
42 | } |
43 | Console.ReadKey(true); |
44 |
45 | } |
46 |
47 | } |
48 |
49 | class LogLINQSQL : System.IO.TextWriter |
50 | { |
51 | public override void Write(char[] buffer, int index, int count) |
52 | { |
53 | System.Diagnostics.Debug.Write(new String(buffer, index, count)); |
54 | } |
55 |
56 | public override void Write(string value) |
57 | { |
58 | System.Diagnostics.Debug.Write(value); |
59 | } |
60 |
61 | public override Encoding Encoding |
62 | { |
63 | get { return System.Text.Encoding.UTF8; } |
64 | } |
65 | } |
66 | } |
I hope this post was useful. Thanks for reading ![]()
No comments:
Post a Comment