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);
    
  • 相关阅读:
    IDEA Inspections详解
    IDEA 阿里编码规范插件
    IDEA Save Actions插件
    IDEA Lombok插件
    设计模式-简单工厂模式与工厂模式
    DAO设计模式
    Jcrop+strut2+jsp实现图片剪切
    Spring的Bean的作用域
    Spring的事务机制
    windows 下 Redis 主从 读写分离
  • 原文地址:https://www.cnblogs.com/hwxing/p/12693713.html
Copyright © 2011-2022 走看看