Как выполнить запрос, возвращающий анонимный тип (платформа 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 query = _
From product In products _
Select New With _
{ _
.ProductId = product.ProductID, _
.ProductName = product.Name _
}
Console.WriteLine("Product Info:")
For Each productInfo In query
Console.WriteLine("Product Id: {0} Product name: {1} ", _
productInfo.ProductId, productInfo.ProductName)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Product> products = AWEntities.Product;
var query =
from product in products
select new
{
ProductId = product.ProductID,
ProductName = product.Name
};
Console.WriteLine("Product Info:");
foreach (var productInfo in query)
{
Console.WriteLine("Product Id: {0} Product name: {1} ",
productInfo.ProductId, productInfo.ProductName);
}
}
Далее приводится пример на языке Entity SQL.
Using advWorksContext As AdventureWorksEntities = New AdventureWorksEntities
Dim commandText As String = "SELECT p.ProductID, p.Name FROM " & _
"AdventureWorksEntities.Product as p"
Try
Dim query As New ObjectQuery(Of DbDataRecord)(commandText, advWorksContext)
For Each result As DbDataRecord In query
Console.WriteLine("ID {0} Name {1}", result.Item(0), result.Item(1))
Next
Catch ex As EntityException
Console.WriteLine(ex.ToString())
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
string myQuery = @"SELECT p.ProductID, p.Name FROM
AdventureWorksEntities.Product as p";
try
{
foreach (DbDataRecord rec in
new ObjectQuery<DbDataRecord>(myQuery, advWorksContext))
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}
catch (EntityException ex)
{
Console.WriteLine(ex.ToString());
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
}
Далее приведен пример метода построителя запросов.
Using advWorksContext As AdventureWorksEntities = _
New AdventureWorksEntities
Try
' Use the Select method to define the projection.
Dim query As ObjectQuery(Of DbDataRecord) = _
advWorksContext.Product.Select("it.ProductID, it.Name")
' Iterate through the collection of data rows.
For Each result As DbDataRecord In query
Console.WriteLine("ID{0}: Name {1}", _
result.Item(0), result.Item(1))
Next
Catch ex As EntitySqlException
Console.WriteLine(ex.ToString())
End Try
End Using
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Use the Select method to define the projection.
ObjectQuery<DbDataRecord> query =
advWorksContext.Product.Select("it.ProductID, it.Name");
// Iterate through the collection of data rows.
foreach (DbDataRecord rec in query)
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}
catch (EntitySqlException ex)
{
Console.WriteLine(ex.ToString());
}
}
См. также
Задачи
Как выполнить запрос, возвращающий тип сущности (платформа Entity Framework)
Как выполнить запрос, возвращающий тип-примитив (платформа Entity Framework)
Как выполнить параметризованный запрос (платформа Entity Framework)
Основные понятия
Методы построителя запросов (платформа Entity Framework)