我正在使用
在测试项目中。以下基于EF的原始SQL命令在Oracle 11g Express Edition上执行,但在Oracle 12c Enterprise Edition上失败(更具体地说,它挂起,因为它似乎未完成执行,但不会引发异常)。
[OneTimeTearDown]
public override void DeleteTestData(FooContext context)
{
var sql = "delete from FOO.BAR " +
"where TO_CHAR(REFERENCE) = 'TestStore'";
context.Database.ExecuteSqlCommand(sql);
}
我的原始SQL当然无效。我在做什么错了?
答案 0 :(得分:0)
我真的不确定为什么它可以在我的11g Express Edition本地副本而不是12c本地副本上起作用,但是根据this website,REFERENCE
是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);
}