Пейджинг с Entity Framework 7 и SQL Server 2008
Я пытаюсь использовать подкачку (то есть .Skip(...).Take(...)
в Entity Framework 7. Он работает нормально с Microsoft SQL Server 2012 и 2014, но не работает со следующей ошибкой SQL Server 2008:
System.Data.SqlClient.SqlException(0x80131904): неправильный синтаксис рядом с "СМЕЩЕНИЕ". Недопустимое использование опции NEXT в инструкции FETCH.
Я понял, что это нарушение в EF версии 6.1.2 (http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html). Но исправление заключается в том, чтобы изменить атрибут файла EDMX файла ProviderManifestToken на "2008".
Проблема в том, что в настоящее время EF7 поддерживает только сценарий с кодовым кодом, поэтому EDMX отсутствует. Возникает вопрос: как настроить веб-сайт ASP.NET 5 с Entity Framework 7 на использование подстановочного подкатегория для SQL Server старше 2012 года?
Ответы
Ответ 1
Я сам столкнулся с этой проблемой, используя EF 7 и SQL Server 2008. К счастью, в последней версии EF 7 версии rc1 вы можете решить эту проблему с помощью .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()
);
Ответ 2
Если вы используете файл Edmx, вы должны открыть файл edmx с помощью редактора XML и изменить
ProviderManifestToken="2012" ==> ProviderManifestToken="2008"
в строке 7.
Пожалуйста, взгляните на это сообщение в блоге для получения дополнительной информации:
http://erikej.blogspot.com.tr/2014/12/a-breaking-change-in-entity-framework.html
Ответ 3
Он сломался в RC 1. Надо ждать, чтобы получить RC 2.
https://github.com/aspnet/EntityFramework/issues/4616