Как просмотреть команды хранения (платформа Entity Framework)
В этом разделе описано использование метода ToTraceString для просмотра команд хранилища для запроса ObjectQuery в платформе Entity Framework. В примерах этого раздела объясняется, как просмотреть команды хранения для запроса, возвращающего объекты Product из таблицы Production.Product. Один и тот же пример приводится с использованием всех следующих технологий запросов Entity Framework:
LINQ to Entities
Entity SQL и ObjectQuery<T>
Методы построителя запросов класса ObjectQuery<T>
Пример в этом разделе основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните инструкции из разделов Как вручную настроить проект Entity Framework и Как определить модель EDM вручную (платформа Entity Framework). Для определения модели AdventureWorks Sales можно также использовать мастер моделей EDM. Дополнительные сведения см. в разделе Как использовать мастер моделей EDM (платформа Entity Framework).
Примеры
Это пример LINQ to Entities.
Using advWorksContext As New AdventureWorksEntities()
Try
' Define an ObjectQuery to use with the LINQ query.
Dim products As ObjectQuery(Of Product) = advWorksContext.Product
' Define a LINQ query that returns a selected product.
Dim result = From product In products _
Where product.ProductID = 900 _
Select product
' Cast the inferred type to a ObjectQuery
' and then write the store commands for the query.
Console.WriteLine(CType(result, ObjectQuery(Of Product)).ToTraceString())
Catch ex As EntitySqlException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Define an ObjectQuery to use with the LINQ query.
ObjectQuery<Product> products = advWorksContext.Product;
// Define a LINQ query that returns a selected product.
var result = from product in products
where product.ProductID == 900
select product;
// Cast the inferred type var to an ObjectQuery
// and then write the store commands for the query.
Console.WriteLine(((ObjectQuery<Product>)result).ToTraceString());
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
Это пример на языке Entity SQL.
Using advWorksContext As New AdventureWorksEntities
Try
' Define the Entity SQL query string.
Dim queryString As String = _
"SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product " & _
"WHERE Product.ProductID = 900"
' Define the object query with the query string.
Dim productQuery As New ObjectQuery(Of Product) _
(queryString, advWorksContext, MergeOption.AppendOnly)
' Write the store commands for the query.
Console.WriteLine(productQuery.ToTraceString())
Catch ex As EntitySqlException
Console.WriteLine(ex.ToString)
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Define the Entity SQL query string.
string queryString =
@"SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product
WHERE Product.ProductID = 900";
// Define the object query with the query string.
ObjectQuery<Product> productQuery =
new ObjectQuery<Product>(queryString, advWorksContext, MergeOption.AppendOnly);
// Write the store commands for the query.
Console.WriteLine(productQuery.ToTraceString());
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
Это пример метода построителя запросов.
Using advWorksContext As New AdventureWorksEntities()
Try
' Define the object query for the specific product.
Dim productQuery As ObjectQuery(Of Product) = _
advWorksContext.Product.Where("it.ProductID = 900")
' Write the store commands for the query.
Console.WriteLine(productQuery.ToTraceString())
Catch ex As EntitySqlException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Define the object query for the specific product.
ObjectQuery<Product> productQuery =
advWorksContext.Product.Where("it.ProductID = 900");
// Write the store commands for the query.
Console.WriteLine(productQuery.ToTraceString());
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
См. также
Основные понятия
Запросы объектов (платформа Entity Framework)
Методы построителя запросов (платформа Entity Framework)
Общие сведения о языке Entity SQL
Другие ресурсы
Технология LINQ to Entities
Запросы к модели EDM (задачи Entity Framework)