Tengo una unidad de trabajo y un repositorio que usa EF 4 y POCOs. Como EF requiere un conjunto ordenado antes de que pueda Omitir() y Tomar(), agregué la siguiente prueba unitaria (sin simulaciones) solo para extraer un registro y ver si funcionaba.Ayúdame a comprender "LINQ to Entities only supports casting Entity Data Model tipos primitivos"
var myList = UOW.EntityRepo.Get(orderbyLambda: p => p.ID, page: 1, pageSize: 1);
Esto da como resultado una expresión de orderbyLambda = {p => Convert(p.ID)}
y un error durante la enumeración. El ID es tinyint
(Int16/short)
Entonces, ¿por qué esto no ordena por ID? Más información sobre el error
Unable to cast the type 'System.Int16' to type 'System.Object'.
que definen el orderbyLambda como Expression<Func<E, object>> orderbyLambda
EDIT:
El verdadero asesino es si hago esto:
orderbyLambda: p => new { p.ID }
Funciona ... ¿Por qué?
orderbyLambda: p => new {p.ID} funcionó ... Muy interesante ... –
Tuve un problema similar al tratar de hacer que OrderBy fuera parte de mi API de repositorio. LINQ to Entities se negó en OrderBy (e => e.SomeCollection.Count). Cambiar la expresión a OrderBy (e => new {e.SomeCollection.Count}) también funcionó para mí. – danludwig
+1 al comentario anterior de olivehour, esto funcionó para mí también. – Beyers