• ASPNETCORE MVC5 使用记录


    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.Skip((page-1) * limit).Take(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>();

    3、Server.MapPath()的替代方法

    在Controller的构造方法中传入参数并使用

        private IWebHostEnvironment Environment;
            public SystemLogController(IWebHostEnvironment _environment)
            {
                Environment = _environment;
           //Environment.WebRootPath }

      

    4、JSONResult 日期格式化的问题

    处理方案参考:https://www.cnblogs.com/jesen1315/p/12666737.html

    public class DateTimeConverter : JsonConverter<DateTime>
    {
        public string DateTimeFormat { get; set; } = "yyyy-MM-dd HH:mm:ss";
    
        public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => DateTime.Parse(reader.GetString());
    
        public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) => writer.WriteStringValue(value.ToString(this.DateTimeFormat));
    }
    
    services.AddMvc().AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
    }
    

    5、EntityFrameworkCore 查看 linq要执行的语句方法

    在原来版本的使用中直接使用ToString()就可以查看到生成的语句,但现在使用的这个版本没办法看了对调试非常的不方便。

    网络搜索处理方案参考:https://www.cnblogs.com/fancyblogs/p/10535214.html

    通过nuget添加引用 Microsoft.Extensions.Logging.Debug

    找到EF的DbContext文件,头部引用

    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Logging.Debug;

     在DbContext文件里定义一个日志工厂

            public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] {
                new DebugLoggerProvider()
            });

    在DbContext文件OnConfiguring连接字符前添加日志UseLoggerFactory(MyLoggerFactory)

            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                if (!optionsBuilder.IsConfigured)
                {
                    optionsBuilder.UseLoggerFactory(MyLoggerFactory).UseMySql("");
                }
            }

    运行查看 在输出面板里查看

  • 相关阅读:
    终端-进入云服务器
    Git-简单的利用SourceTree提交代码
    iOS-多线程的底层实现
    JS-表单提交检查表单字数方法
    JS-实时修改在textarea里面的span(实际输入的文字)
    JS-textarea限制输入字数
    JS-Zepto.js中文链接
    搭建简单的单个Mybatis框架
    创建一个简单的SSM框架(2)
    创建一个简单的SSM框架(1)
  • 原文地址:https://www.cnblogs.com/jgjgjg23/p/15341323.html
Copyright © 2020-2023  润新知