zoukankan      html  css  js  c++  java
  • EF core 指定oracle版本、输出sql日志

    前言

    我使用的是oracle 11版本的数据库,但我使用EF Core 2.1,在使用linq进行分页会生成Oracle 12语法的SQL,在Oracle 11下会运行报错。

    在dbcontext下OnConfiguring指定使用Oracle 11版本
    optionsBuilder.UseOracle(connectionString,p => p.UseOracleSQLCompatibility("11"));
    
    默认生成12版本的sql
    SELECT "p"."KEYID"
    FROM "HD_FORM" "p"
    WHERE "p"."EAREA" IS NULL 
    OFFSET :p_0 ROWS FETCH NEXT :p_1 ROWS ONLY
    
    指定版本为11的SQL
    Select K0 "KEYID" from(
        select "m2".*, rownum r2 from
        (
            SELECT "p"."KEYID" K0
            FROM "HD_FORM" "p"
            WHERE ("p"."EAREA" IS NULL )
        ) "m2"
    ) "m1"
    where r2 > :p_0
    and r2 <= (:p_0 + :p_1)
    

    附加 日志输出SQL
    1、通过nuget添加引用 Microsoft.Extensions.Logging.Debug
    2、在EF的DbContext文件引用
    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Logging.Debug;
    
    3、日志工厂
    public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] {
                new DebugLoggerProvider((category, level) => category == DbLoggerCategory.Database.Command.Name && level >= LogLevel.Information)
            });
    
    4、在dbcontext下OnConfiguring添加
    optionsBuilder.UseLoggerFactory(MyLoggerFactory);
    
  • 相关阅读:
    基础
    条件语句/变量和基本数据类型
    编程语言介绍
    asp.net中log4net使用方法
    web布到服务器上出错
    《转》IEnumerable、IEnumerator两个接口的认识
    异步ADO.NET
    Session的使用
    AJAX参数及各种HTTP状态值
    简易的抓取别人网站内容
  • 原文地址:https://www.cnblogs.com/hwxing/p/12693713.html
Copyright © 2011-2022 走看看