Mam jednostkę pracy i repozytorium używające EF 4 i POCO. Ponieważ EF wymaga uporządkowanego zestawu, zanim będzie mógł Pomijać() i Take(), dodałem następujący test jednostki (bez makiet), aby wyciągnąć rekord, aby sprawdzić, czy zadziałało.Pomóż mi zrozumieć "LINQ to Entities obsługuje tylko podstawowe typy rzutowania danych jednostki Entity"
var myList = UOW.EntityRepo.Get(orderbyLambda: p => p.ID, page: 1, pageSize: 1);
Powoduje to wyrażenie orderbyLambda = {p => Convert(p.ID)}
i błąd podczas wyliczenia. Identyfikator to tinyint
(Int16/krótki)
Dlaczego więc nie można zamówić przez identyfikator? Więcej informacji na temat błędu
Unable to cast the type 'System.Int16' to type 'System.Object'.
I zdefiniować orderbyLambda jak Expression<Func<E, object>> orderbyLambda
EDIT:
Prawdziwy zabójca jest, jeśli mogę to zrobić:
orderbyLambda: p => new { p.ID }
to działa ... Czemu?
orderbyLambda: p => nowy {p.ID} działał ... Bardzo interesujący ... –
Miałem podobny problem, próbując uczynić część OrderBy mojego API repozytorium. LINQ do Entities balked na OrderBy (e => e.SomeCollection.Count). Zmiana wyrażenia na OrderBy (e => new {e.SomeCollection.Count}) również działała dla mnie. – danludwig
+1 do powyższego komentarza Olivehour, to też zadziałało. – Beyers