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>();