Ten błąd jest konsekwencją architektury providera SQL Server dla linq to entities, który całe zapytanie konwertuje na SQL. W SQL nie ma polecenia last a jedynie za pomocą Polecenia SELECT TOP X można uzyskać pierwszych X wierszy. Prostym rozwiązaniem jest zamiana wywołania Last() na OrderByDescending(x => x.ID).First();