Управляемый драйвер ODP.Net - ORA-12704: несоответствие набора символов в сгенерированном коде

В настоящее время я использую управляемый драйвер Oracle (v12.1.2400) в качестве драйвера Entity Framework и в настоящее время вижуORA-12704: character set mismatch ошибка во время исполнения.

Я использую следующий код LINQ-> SQL:

from c in CUSTOMER.AsNoTracking()
where c.ACCOUNT.Contains("DE")
   && c.DELETED == "N"
orderby (c.FORENAME + c.SURNAME)
select new { c.ACCOUNT, c.FORENAME, c.SURNAME})

и это создает следующий SQL:

SELECT "Project1"."C2" AS "C1",
"Project1"."ACCOUNT" AS "ACCOUNT", 
"Project1"."FORENAME" AS "FORENAME",
"Project1"."SURNAME" AS "SURNAME"
FROM (
      SELECT(  (CASE WHEN ("Extent1"."FORENAME" IS NULL) THEN N''
                     ELSE "Extent1"."FORENAME" END)
             ||(CASE WHEN ("Extent1"."SURNAME" IS NULL) THEN N''
                     ELSE "Extent1"."SURNAME" END)) AS "C1", 
             "Extent1"."ACCOUNT" AS "ACCOUNT", 
             "Extent1"."FORENAME" AS "FORENAME",
             "Extent1"."SURNAME" AS "SURNAME",
             1 AS "C2"
      FROM "TEST"."CUSTOMER" "Extent1"
      WHERE (("Extent1"."ACCOUNT" LIKE '%DE%') 
             AND ('N' = "Extent1"."DELETED")))  "Project1"
ORDER BY "Project1"."C1" ASC;

Когда я отлаживаю этот SQL, я вижу проблему в том, что SQL используетN'' вCASE разделы. КАК столбцы не являются юникодом, если я уберу предыдущиеN оставить просто'' тогда sql работает как положено.

Можно ли как-то предотвратить это по умолчанию?

Все столбцы БД в настоящее времяVARCHARи моделируются в C # какstring.
Сначала сопоставьте код для двух столбцов:

this.Property(t => t.FORENAME).HasColumnName("FORENAME").IsUnicode(false).HasMaxLength(35);
this.Property(t => t.SURNAME).HasColumnName("SURNAME").IsUnicode(false).HasMaxLength(35);

Я ожидал, чтоIsUnicode(false) заявление позаботится об этом.

К вашему сведению, это работало, когда я использовал EF5 и неуправляемый драйвер.
Кроме того, драйверы Devart dotConnectForOracle не имеют этой проблемы, поэтому я думаю, что это ошибка в драйверах Oracle.

Ответы на вопрос(2)

Ваш ответ на вопрос