Tengo problemas para vincular un telerik RadGrid y un simple GridView de ASP.NET con los resultados de la siguiente consulta de LINQ a entidades. En ambos casos, las cuadrículas contienen el número correcto de filas, pero los datos de solo el primer puñado de filas se duplican en todas las otras filas. Estoy asignando directamente el valor de retorno de este código a la propiedad DataSource en las cuadrículas.Filas duplicadas cuando se vinculan datos con LINQ a Entidades
public IEnumerable<DirectoryPersonEntry> FindPersons(string searchTerm)
{
DirectoryEntities dents = new DirectoryEntities();
return from dp in dents.DirectoryPersonEntrySet
where dp.LastName.StartsWith(searchTerm) || dp.Extension.StartsWith(searchTerm)
orderby dp.LastName, dp.Extension
select dp;
}
añadido: Este es el código ADO.NET llanura alternativo que funciona:
DataTable ret = new DataTable();
using (SqlConnection sqn = new SqlConnection(ConfigurationManager.ConnectionStrings["WaveAdo"].ConnectionString))
{
SqlDataAdapter adap = new SqlDataAdapter("select * from DirectoryPersonList where LastName like '" + searchTerm + "%' order by LastName ", sqn);
sqn.Open();
adap.Fill(ret);
}
return ret;
MÁS:
- La consulta enviada a SQL Server mediante LINQ funciona.
- Al iterar los resultados de la consulta LINQ antes de devolverlos se obtienen las mismas duplicaciones.
- Al iterar los resultados de LINQ en el método de llamada, antes de enlazar, se producen las mismas duplicaciones.
ACTUALIZACIÓN: Basándose en el asesoramiento muy lógico y apropiado de Marc Gravel a continuación, he encontrado que el diseñador de EF había hecho una suposición muy ignorante en una clave de entidad para mi clase de entidad, el primer campo en su lista de campos, departamento, del cual solo hay siete entradas compartidas en todos los demás registros.
Esto es de hecho la causa de la duplicación. Si tan solo pudiera cambiar o eliminar la clave de entidad, pero este diseñador EF con toda la lógica de negocios de un Etch-a-Sketch está admirablemente comprometido a repetir su elección retrasada de clave mientras se ríe de mí bloqueado afuera pidiendo cambiar la clave.
¿Estás seguro de que la tabla no contiene duplicados? La consulta es correcta –
@ Alexander, sí, estoy seguro. Una consulta simple de DataTable en la misma vista da como resultado que las cuadrículas se vinculen correctamente. – ProfK
Por favor, muestre más código. Ambos trabajando y problemático. –