zoukankan      html  css  js  c++  java
  • Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束

    如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”,

    请先检查你的DbContext中UseOracle(...)的写法:

    services.AddDbContextPool<PartnerDbContext>(options =>
    {
        options.UseOracle(GetConnectionString(configuration, DatabaseType.Oracle));// 这是错误的写法,默认是12g版本的语法
    }, poolSize: 64);

    主要是因为Oracle11和Oracle12的SQL语法上有较多不同的地方,所以我们需要在UseOracle时进行指定版本的数据库使用才能避免这个错误的出现。

    正确的写法如下:

                services.AddDbContextPool<PartnerDbContext>(options =>
                {
                    options.UseOracle(GetConnectionString(configuration, DatabaseType.Oracle),b=>b.UseOracleSQLCompatibility("11"))
                }, poolSize: 64);

    通过UseOracleSQLCompatibility方法,里面传递11指的是Oracle11g版本,如果是12g版本,请传递12

    这样就能避免再次出现:“ORA-00933:SQL命令未正确结束”

  • 相关阅读:
    C++类的内存结构
    emplace与insert的区别(C++11)
    C/C++宏的奇技淫巧
    编译器对内存的分配
    利用C++实现模块隐藏(R3层断链)
    PCB标准规范
    RTC 总结
    0.96寸OLED显示屏 IIC接口(SSD1306)
    串行通信简介(SPI, IIC, UART)
    人生感悟
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/12201762.html
Copyright © 2011-2022 走看看