Как выполнить запрос, возвращающий тип сущности (платформа Entity Framework)
В этом разделе показано выполнение запроса на языке Entity SQL, возвращающего коллекцию экземпляров типа сущности. Затем запрос проходит по всей коллекции продуктов и выводит имя и идентификатор для каждого продукта. Один и тот же пример приводится с использованием всех следующих технологий запросов 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 AWEntities As New AdventureWorksEntities
Dim products As ObjectQuery(Of Product) = AWEntities.Product
Dim productsQuery = _
From product In products _
Select product
Console.WriteLine("Product Names:")
For Each product In productsQuery
Console.WriteLine(product.Name)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Product> products = AWEntities.Product;
IQueryable<Product> productsQuery = from product in products
select product;
Console.WriteLine("Product Names:");
foreach (var prod in productsQuery)
{
Console.WriteLine(prod.Name);
}
}
Далее приводится пример на языке Entity SQL.
Using advWorksContext As AdventureWorksEntities = New AdventureWorksEntities
Try
Dim queryString As String = "SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product"
Dim query As New ObjectQuery(Of Product)(queryString, advWorksContext, MergeOption.NoTracking)
' Iterate through the collection of Product items.
For Each result As Product In query
Console.WriteLine("Product Name: {0} Product ID: {1}", _
result.Name, result.ProductID)
Next
Catch exception As EntityException
Console.WriteLine(exception.ToString)
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
string queryString =
@"SELECT VALUE Product FROM AdventureWorksEntities.Product AS Product";
ObjectQuery<Product> productQuery =
new ObjectQuery<Product>(queryString, advWorksContext, MergeOption.NoTracking);
// Iterate through the collection of Product items.
foreach (Product result in productQuery)
Console.WriteLine("Product Name: {0}; Product ID: {1}",
result.Name, result.ProductID);
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
}
Далее приведен пример метода построителя запросов.
Using advWorksContext As AdventureWorksEntities = _
New AdventureWorksEntities
Try
Dim query As ObjectQuery(Of Product) = _
advWorksContext.Product
' Iterate through the collection of Product items.
For Each result As Product In query
Console.WriteLine("Product Name:{0}Product ID: {1}", _
result.Name, result.ProductID)
Next
Catch exception As EntitySqlException
Console.WriteLine(exception.ToString)
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
ObjectQuery<Product> productQuery = advWorksContext.Product;
// Iterate through the collection of Product items.
foreach (Product result in productQuery)
Console.WriteLine("Product Name: {0}; Product ID: {1}",
result.Name, result.ProductID);
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
См. также
Задачи
Как выполнить запрос, возвращающий анонимный тип (платформа Entity Framework)
Как выполнить запрос, возвращающий тип-примитив (платформа Entity Framework)
Как выполнить параметризованный запрос (платформа Entity Framework)