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);
    
  • 相关阅读:
    1093. Count PAT's (25)
    1092. To Buy or Not to Buy (20)
    机器学习实战——k-邻近算法:约会网站
    1057. Stack (30)
    1017. Queueing at Bank (25)
    strcpy、strncpy和memcpy的用法比较
    华为笔试题--蛇形矩阵
    对于内核执行过程的理解
    pom.xml格式问题
    Json反序列化遇到的问题
  • 原文地址:https://www.cnblogs.com/hwxing/p/12693713.html
Copyright © 2011-2022 走看看