How to: Trace SQL Statements Generated by OpenAccessContext
This article is relevant to entity models that utilize the deprecated Visual Studio integration of Telerik Data Access. The current documentation of the Data Access framework is available here.
Telerik Data Access has an integrated mechanism for tracing and logging the communication between the application and the database server. In order to use the tracing and logging mechanism of the OpenAccessContext, you should initialize the OpenAccessContext's Log property.
using (EntitiesModel dbContext = new EntitiesModel())
{
dbContext.Log = new StringWriter();
}
Using dbContext As New EntitiesModel()
dbContext.Log = New StringWriter()
End Using
In the following example Load, Insert and Update operations are performed. Finally, the OpenAccessContext's SaveChanges method is invoked. Note that a new StringWriter instance is created and set to the OpenAccessContext's Log property.
System.IO.StringWriter output = new System.IO.StringWriter();
using (EntitiesModel dbContext = new EntitiesModel())
{
dbContext.Log = output;
// Load
Customer customer = dbContext.Customers.First(c => c.CustomerID == "ALFKI");
// Update
customer.Fax = "[newFax]";
// Insert
Customer newCustomer = new Customer();
newCustomer.CustomerID = "MyId";
newCustomer.CompanyName = "MyCompany";
dbContext.Add(newCustomer);
dbContext.SaveChanges();
Console.Write(output.ToString());
Console.Read();
}
Dim output As New IO.StringWriter()
Using dbContext As New EntitiesModel()
dbContext.Log = output
' Load
Dim _customer As Customer = dbContext.Customers.First(Function(c) c.CustomerID = "ALFKI")
' Update
_customer.Fax = "[newFax]"
' Insert
Dim newCustomer As New Customer()
newCustomer.CustomerID = "MyId"
newCustomer.CompanyName = "MyCompany"
dbContext.Add(newCustomer)
dbContext.SaveChanges()
Console.Write(output.ToString())
Console.Read()
End Using
Finally, the result of the output.ToString() method should be similar to this:
SELECT TOP(??T) a.[CustomerID] AS COL1, a.[Address] AS COL2, a.[City] AS COL3,
a.[CompanyName] AS COL4, a.[ContactName] AS COL5, a.[ContactTitle] AS COL6,
a.[Country] AS COL7, a.[Fax] AS COL8, a.[Phone] AS COL9, a.[PostalCode] AS COL10,
a.[Region] AS COL11 FROM [Customers] a
WHERE a.[CustomerID] = 'ALFKI'
INSERT INTO [Customers] ([Address], [City], [CompanyName], [ContactName], [ContactTitle],
[Country], [CustomerID], [Fax], [Phone], [PostalCode], [Region])
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
UPDATE [Customers] SET [Fax]=? WHERE [CustomerID] = ? AND [Fax]=?