使用的EntityFramework为ODP.NET,为什么下面的原始的SQL命令,在Oracle 12c中挂?

问题描述 投票:0回答:1

我正在使用

  • 的Visual Studio 2015年
  • Oracle.ManagedDataAccess 18.3.0
  • Oracle.ManagedDataAccess.EntityFramework 18.3.0
  • 实体框架6.2.0

在一个测试项目。基于以下EF原始的SQL命令执行上的Oracle 11g Express Edition的,但失败了(更具体地说,它挂在它似乎没有完全执行,但不抛出异常)在Oracle 12c的企业版。

[OneTimeTearDown]
public override void DeleteTestData(FooContext context)
{
    var sql = "delete from FOO.BAR " +
              "where TO_CHAR(REFERENCE) = 'TestStore'";
    context.Database.ExecuteSqlCommand(sql);
}

当然我的原始的SQL无效。我究竟做错了什么?

c# oracle odp.net odp.net-managed
1个回答
0
投票

我真的不知道为什么这个工作对我的本地11g快捷版的拷贝,而不是12C,但根据this websiteREFERENCE在PL / SQL中的保留字,不应该被用作标识符。在原始的SQL完全限定列名固定我的问题。

[OneTimeTearDown]
public override void DeleteTestData(FooContext context)
{
    var sql = "delete from FOO.BAR " +
              "where TO_CHAR(FOO.BAR.REFERENCE) = 'TestStore'";
    context.Database.ExecuteSqlCommand(sql);
}
© www.soinside.com 2019 - 2024. All rights reserved.