Ali*_*eza 5 c# asp.net sql-server-2008 entity-framework-core asp.net-core
这是我的EF Core代码:
int page = 1, rowPerPage = 5;
int count = ctx.Specialty.Count();
int start = page * rowPerPage;
var Select = ctx.Specialty.OrderByDescending(u => u.IdS)
.Skip(start)
.Take(rowPerPage)
.AsEnumerable();
Run Code Online (Sandbox Code Playgroud)
我正在使用SQL Server 2008和Visual Studio 2017,也安装了SQL Server 2017。我的项目是ASP.NET Core。
错误:
“ OFFSET”附近的语法不正确。FETCH语句中选项NEXT的无效用法
我认为问题是SQL Server 2008。
如何告诉我的项目使用SQL Server 2017?
Ell*_*ott 11
有一个兼容性设置(UseRowNumberForPaging
),可以在DbContext本身中进行配置:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var coonectionString = "Data Source=localhost\\MSSQLSERVER01;Initial Catalog=AppDb01;Integrated Security=True";
optionsBuilder.UseSqlServer(coonectionString, builder => builder.UseRowNumberForPaging());
}
Run Code Online (Sandbox Code Playgroud)
或作为启动的一部分:
public void ConfigureServices(IServiceCollection services)
{
var coonectionString = "Data Source=localhost\\MSSQLSERVER01;Initial Catalog=AppDb01;Integrated Security=True";
services.AddDbContext<AppDbContext>(options => options.UseSqlServer(coonectionString, builder => builder.UseRowNumberForPaging()));
}
Run Code Online (Sandbox Code Playgroud)
Jaw*_*sim 10
对于使用 .Net 6 的任何人,我找到了这个包EntityFrameworkCore.UseRowNumberForPaging 0.3.0: https: //www.nuget.org/packages/EntityFrameworkCore.UseRowNumberForPaging/
基于github问题:https ://github.com/dotnet/efcore/issues/16400
谢谢你, Rwing,无论你是谁,你都是英雄!
UseRowNumberForPaging
在 EF Core 3.x 中被删除,方法被标记为过时。但是,您可以使用EfCore3.SqlServer2008Query
package 代替。Nuget 中有 2 个可用的包,一个用于 >= .NET 5.0,另一个用于 >= .NET Core 3.1
用法:
services.AddDbContext<MyDbContext>(o =>
o.UseSqlServer(Configuration.GetConnectionString("Default"))
.ReplaceService<IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2493 次 |
最近记录: |