1、JOSNResult属性首字母小写的问题。

在Startup.cs中ConfigureServices 修改配置。

 services.AddMvc().AddJsonOptions(options =>
            {
                ////格式化日期时间格式
                //options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter());
                ////数据格式首字母小写
                ////options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase;
                //数据格式原样输出
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
                ////取消Unicode编码
                //options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
                ////忽略空值
                //options.JsonSerializerOptions.IgnoreNullValues = true;
                ////允许额外符号
                //options.JsonSerializerOptions.AllowTrailingCommas = true;
                ////反序列化过程中属性名称是否使用不区分大小写的比较
                //options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
            })

  

2、EFCORE 5.0 对SQL Server 2008 R2 兼容问题

  据说从某版本开始EF对SQL Server 2008 R2的兼容性不好了,具体应该是想强制让大家买最新的SQL SERVER 2012及以上版本,功能受限,简单的查询使用是没问题的,当开始制作分页查询的时候问题来了。

代码 

var list = db.sys_user.Take(limit).Skip((page-1) * limit).ToList();

EF会报错【System.Data.SqlClient.SqlException: ‘OFFSET’ 附近有语法错误】,在老版本中使用通过配置以下代码解决,但是在EFCORE5中,API已经被移除。

services.AddDbContext(options => options.UseSqlServer(connection,b=>b.UseRowNumberForPaging()));

经过查阅发现了以下方案,使用nuget 搜索安装 【EfCore.SqlServer2008Query】包,然后添加配置代码。目前功能使用正常,还未发现问题。

optionsBuilder.ReplaceService<IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>();