c# / problemiki / T-SQL

EntityFramework i problem z paginacją w SQL Server 2008 R2

Ostatnio zostałem zmuszony do zaprzyjaźnienia się z EntityFramework. Jedną z pierwszych czynności było stworzenie mechanizmu paginacji stron po stronie serwera SQL. Do tego celu stworzyłem poniższą metodę:

Niestety podczas wykonania kodu dostałem exception o treści:

public IEnumerable<TEntity> GetList(int page, Expression<Func<TEntity, int>> order, int sortDir)
{
	List<TEntity> result;
	if (sortDir == 0)
	{
		result = Context.Set<TEntity>()
			.OrderBy(order)
			.Skip((page - 1)*10)
			.Take(20)
			.ToList();
	}
	else
	{
		result = Context.Set<TEntity>()
			.OrderByDescending(order)
			.Skip((page - 1)*10)
			.Take(20)
			.ToList();
	}
	return result;
}

Incorrect syntax near ‚OFFSET’. Invalid usage of the option NEXT in the FETCH statement

Problem okazał się leżeć deklaracji ProvideManifestToken, która była niezgodna z wersją mojego serwera SQL 2008 R2 (wiem, wiem, ale takie są okoliczności przyrody :)). Zmiana wartości z 2012 na 2008 rozwiązała problem. ProvideManifestToken znajduje się w pliku .edmx.

Rozwiązanie znalazłem tutaj.

Leave a Reply

Your email address will not be published. Required fields are marked *