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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM