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及以上;


  • 相关阅读:
    HTML5 <input> multiple 属性
    AWS
    new Set() 数组去重
    IAM
    Amazon S3
    Promis 实例
    JS
    React 5
    React 4
    React 3
  • 原文地址:https://www.cnblogs.com/willingtolove/p/11945768.html
Copyright © 2011-2022 走看看