c# - raw - El enlace de datos directamente a una consulta de tienda(DbSet, DbQuery, DbSqlQuery) no es compatible
sql query ef core (3)
Estoy programando Visual Studio 2012 y utilizando Entity Model como mi capa de datos. Sin embargo, mi control desplegable con la instrucción Linq tiende a lanzar una excepción no manejada cuando la página intenta cargarse (título indicado anteriormente). Aquí está mi código de abajo;
using (AdventureWorksEntities dw = new AdventureWorksEntities())
{
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID });
ddlCon.DataTextField = "Title";
ddlCon.DataValueField = "EmployeeID";
ddlCon.DataBind();
ddlCon.Items.Insert(0, new ListItem("--Select--", "--Select--"));
}
- Quiero saber por qué ocurrió ese error
- ¿Cuál debería ser la forma correcta de enlazar a un control cuando se usa LINQ?
El error es bastante claro: no puede enlazar directamente con los resultados de la consulta, pero en su lugar debe rellenar alguna colección local.
La forma más sencilla de hacerlo es convertirlo en una List<T>
, a través de ToList()
:
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID }).ToList();
O si quieres evitar escribir una expresión LINQ, puedes hacer esto:
var dbContext = new EF.CustomerEntities();
gvCustomers.DataSource = dbContext.CustomersTable.ToList();
aunque esta pregunta ya ha sido respondida, quiero mostrar que también puede obtener la respuesta directamente desde el cuadro de mensaje (recibí el mismo error) ERROR DIÁLOGO CAJA IMAGEN
using (var retrive=new Models.Academy_MSDBEntities())
{
var query = retrive.Students.Where(s => s.Year == year).ToList();
return query;
}