Ho un'unità di lavoro e un repository che utilizza EF 4 e POCOs. Dal momento che EF richiede un set ordinato prima che possa Skip() e Take(), ho aggiunto il seguente test unitario (senza mock) solo per estrarre un record per vedere se ha funzionato.Aiutami a capire "LINQ alle entità supporta solo il cast dei tipi primitivi di Entity Data Model"
var myList = UOW.EntityRepo.Get(orderbyLambda: p => p.ID, page: 1, pageSize: 1);
Ciò risulta in un'espressione di orderbyLambda = {p => Convert(p.ID)}
e un errore durante l'enumerazione. L'ID è un tinyint
(Int16/breve)
Quindi, perché non riesce a ordinare dall'ID? Più sull'errore
Unable to cast the type 'System.Int16' to type 'System.Object'.
ho definire l'orderbyLambda come Expression<Func<E, object>> orderbyLambda
EDIT:
il vero assassino è che se faccio questo:
orderbyLambda: p => new { p.ID }
Funziona ... Perché?
orderbyLambda: p => nuovo {p.ID} ha funzionato ... Molto interessante ... –
Ho avuto un problema simile cercando di rendere OrderBy parte dell'API del repository. LINQ alle entità respinte con OrderBy (e => e.SomeCollection.Count). Anche la modifica dell'espressione in OrderBy (e => new {e.SomeCollection.Count}) ha funzionato per me. – danludwig
+1 al commento di olivahour sopra, questo ha funzionato anche per me. – Beyers