zoukankan      html  css  js  c++  java
  • 【.net core 入坑】.net core 3.0 报错:在 FETCH 语句中选项 NEXT 的用法无效


    1、事故现场:

    在项目中使用.net core 3.0,在EF链接sqlserver2008,在程序中使用了分页用的skip和take,程序报错:

    在 FETCH 语句中选项 NEXT 的用法无效。

    2、分析及解决方案:

    因为分页skip和take转成sql的时候默认是使用FETCHNEXT的,而不是可兼容低版本sqlserver的ROWNUMBER(),所以报错;
    在之前的.net core 版本中,可以通过重写OnConfiguring,配置UseRowNumberForPaging即可,代码如下:

            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                if (!optionsBuilder.IsConfigured)
                {
                    optionsBuilder.UseSqlServer(Config.Instance.GetConnctionString("SqlServer"), options =>
                    {
                        options.UseRowNumberForPaging();
                    });
                }
            }
    

    但是,在.net core 3.0中改写法已经不起作用;
    经过一番查询,发现UseRowNumberForPaging has been removed in 3.0
    参考链接:添加链接描述
    在这里插入图片描述
    解决方案:只能升级sqlserver到2012及以上;


  • 相关阅读:
    文件操作回顾
    数据类型回顾
    面向对象三大特性之封装与多态
    面向对象之继承
    轮播图
    jQuery事件操作
    jQuery动画效果
    jQuery篇
    文档对象模型
    javascript
  • 原文地址:https://www.cnblogs.com/willingtolove/p/11945768.html
Copyright © 2011-2022 走看看