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);
    
  • 相关阅读:
    js禁止空格的输入
    js对cookie的读写操作
    js实现读秒
    formData的简单使用
    图形验证码笔记
    Redis安装
    ZooKeeper安装
    OpenJDK 编译-Linux环境
    Java环境变量-Linux环境
    ArchLinux+Win10双系统的Grub配置
  • 原文地址:https://www.cnblogs.com/hwxing/p/12693713.html
Copyright © 2011-2022 走看看