Cómo ejecutar una consulta que devuelve un tipo anónimo (Entity Framework)
En este tema se proporcionan ejemplos de cómo ejecutar consultas que devuelven una colección de instancias de un tipo anónimo como collection, row y reference. En estos ejemplos, el resultado de la consulta es una colección de tipos de fila. Para obtener más información, vea Sistema de tipos (Entity SQL). Se muestra el mismo ejemplo con cada una de las siguientes tecnologías de consulta de Entity Framework.
LINQ to Entities
Entity SQL con ObjectQuery<T>
Métodos del generador de consultas de ObjectQuery<T>
Los ejemplos de este tema se basan en el modelo AdventureWorks Sales. Para ejecutar el código de este ejemplo, debe haber agregado ya el modelo AdventureWorks Sales al proyecto y haber configurado el proyecto para usar Entity Framework. Para ello, complete los procedimientos de Cómo configurar manualmente un proyecto de Entity Framework y Cómo definir manualmente un modelo Entity Data Model (Entity Framework).. También puede utilizar el Asistente para Entity Data Model con el fin de definir el modelo AdventureWorks Sales. Para obtener más información, vea Cómo usar el Asistente para Entity Data Model (Entity Framework).
Ejemplo
A continuación se muestra el ejemplo de 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);
}
}
A continuación se muestra el ejemplo de 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());
}
}
A continuación se muestra el ejemplo del método del generador de consultas.
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());
}
}
Vea también
Tareas
Cómo ejecutar una consulta que devuelve un tipo de entidad (Entity Framework)
Cómo ejecutar una consulta que devuelve un tipo primitivo (Entity Framework)
Cómo ejecutar una consulta parametrizada (Entity Framework)
Conceptos
Métodos del generador de consultas (Entity Framework)