将 EntityFramework 用于 ODP.NET,为什么以下原始 SQL 命令会在 Oracle 12c 上挂起?

Using EntityFramework for ODP.NET, why does the following raw SQL command hang on Oracle 12c?

我正在使用

在一个测试项目中。以下基于 EF 的原始 SQL 命令在 Oracle 11g 快捷版上执行,但在 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 肯定是无效的。我做错了什么?

我真的不确定为什么这适用于我本地的 11g Express Edition 而不是 12c,但根据 this website,单词 REFERENCE 是 [=15= 中的保留字] 并且不应用作标识符。完全限定原始 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);
}