При использовании EntityFramework для ODP.NET, почему в Oracle 12c висит следующая необработанная команда SQL? - PullRequest
0 голосов
/ 05 февраля 2019

Я использую

  • Visual Studio 2015
  • Oracle.ManagedDataAccess 18.3.0
  • Oracle.ManagedDataAccess.EntityFramework 18.3.0
  • Entity Framework 6.2.0

В тестовом проекте.Следующая команда необработанного SQL на основе EF выполняется в 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 неверен.Что я делаю не так?

1 Ответ

0 голосов
/ 05 февраля 2019

Я действительно не уверен, почему это работает на моей локальной копии 11g Express Edition, а не на 12c, но согласно этому сайту слово 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...