Игнорировать акценты при поиске с использованием linq to entity (EF) и Oracle 12.1 - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно выполнить поиск в таблице со строковым полем, которое содержит акценты, можно применить множество операторов: начать с, содержит, равно, в списке ... Если я выполняю поиск для Müller, я хочуполучить также Mueller (ue - перевод ü на немецкий), то же самое для других букв с акцентами. Я знаю, что этого можно добиться, изменив значения NLS_COMP и NLS_SORT * 1007.*

SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;

Я также знаю, что сортировка возможна на уровне столбцов, но она доступна только с версии 12.2. Есть идеи?

Спасибо за помощь,

Bilel

1 Ответ

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

Я использовал oracle Параметры сеанса NLS для решения моей проблемы.

 if(condition == true)
   AlterSortSession(context);

 public void AlterSortSession(MyContext context)
 {
   var connection = (OracleConnection)context.Database.Connection;
   connection.StateChange += AlterSortSession;
 }

 private static void AlterSortSession(object sender, StateChangeEventArgs e)
 {
  if (e.CurrentState != ConnectionState.Open)
    return;

  var connection = (OracleConnection)sender;
  OracleGlobalization info = connection.GetSessionInfo();

  info.Sort = "XGERMAN_DIN_AI";
  info.Comparison = "LINGUISTIC";

  connection.SetSessionInfo(info);
}

Документация доступна здесь для OracleGlobalization

...