Entity Framework 7 및 SQL Server 2008을 사용한 페이징

asp.net-mvc entity-framework-core paging sql-server-2008

문제

페이징을 사용하려고합니다. (즉, .Skip(...).Take(...) Entity Framework 7에서 .Skip(...).Take(...) Microsoft SQL Server 2012 및 2014에서는 .Skip(...).Take(...) 작동하지만 SQL Server 2008에서는 다음 오류와 함께 실패합니다. :

System.Data.SqlClient.SqlException (0x80131904) : 'OFFSET'근처의 구문이 잘못되었습니다. FETCH 문에 NEXT 옵션이 잘못 사용되었습니다.

나는 EF 버전 6.1.2 ( http://erikej.blogspot.com/2014/12/a-breaking-change-inentity-framework.html )의 급격한 변화라는 것을 알아 냈습니다. 그러나이 수정은 ProviderManifestToken 속성을 "2008"로 설정하는 EDMX 파일을 수정하는 것입니다.

문제는 EF7이 현재 코드 우선 시나리오 만 지원하기 때문에 거기에 EDMX가 없다는 것입니다. 질문 : Entity Framework 7과 함께 ASP.NET 5 웹 사이트를 구성하여 2012보다 오래된 SQL Server에 대한 대체 페이지 매김 방법을 사용하는 방법은 무엇입니까?

수락 된 답변

나는이 문제를 EF 7과 SQL Server 2008을 사용하여 직접 경험했다. 다행스럽게도 최신 rc1 버전의 EF 7에서 다음 예제와 같이 .UseRowNumberForPaging ()을 사용하여이 문제를 해결할 수있다.

services.AddEntityFramework()
  .AddSqlServer()
  .AddDbContext<YourDbContext>(options =>
     options.UseSqlServer(configuration["Data:DefaultConnection:ConnectionString"])
                    // this is needed unless you are on mssql 2012 or higher
                    .UseRowNumberForPaging()
                );

인기 답변

Edmx 파일을 사용하는 경우 XML 편집기를 사용하여 edmx 파일을 열고 변경해야합니다

ProviderManifestToken="2012" ==> ProviderManifestToken="2008"

7 번 줄에.

자세한 내용은이 블로그 게시물을 참조하십시오. http://erikej.blogspot.com.tr/2014/12/a-breaking-change-inentity-framework.html




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.