在执行以下查询时,我在InnerException中报错


  {“'OFFSET'附近的语法不正确。
  FETCH语句中选项NEXT的无效用法。
  关键字“ AS”附近的语法不正确。
  “ OFFSET”附近的语法不正确。
  FETCH语句中选项NEXT的无效用法。
  关键字“ AS”附近的语法不正确。
  “ OFFSET”附近的语法不正确。
  FETCH语句中选项NEXT的无效用法。
  关键字“ AS”附近的语法不正确。“}


C#代码:

var db = new DigilibEntities();

List<title> titles = new List<title>();

titles = db.titles
  .Include("themes")
  .Include("subjects")
  .Include("grades")
  .Where(x => x.themes.Count() == 0 ||
              x.subjects.Count() == 0 ||
              x.grades.Count() == 0)
  .OrderBy(x => x.id)
  .Skip(10)
  .Take(10)
  .ToList();

最佳答案

默认情况下,EF将使用FETCH和OFFSET语法进行分页。在旧版本的SQL Server上不支持此语法。您需要将ProviderManifestToken设置为2008,以便EF生成旧的2008样式语法。

A breaking change in Entity Framework 6.1.2 when using EDMX and SQL Server 2008/2005

关于c# - 跳过并获取在 Entity Framework 中生成异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43322641/

10-16 08:10