使用linq to entities(EF)和Oracle 12.1在搜索时忽略重音符号

使用linq to entities(EF)和Oracle 12.1在搜索时忽略重音符号,oracle,entity-framework,collation,Oracle,Entity Framework,Collation,我需要在一个包含重音符号的字符串字段的表上执行搜索,可以应用许多运算符:start with,contains,equal,in the list。。。 如果我搜索Müller我还想检索Mueller(ue是德语中u的翻译),其他带有重音的字母也是如此,我知道可以通过修改NLS_COMP和NLS_排序来实现这一点 SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC; SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;

我需要在一个包含重音符号的字符串字段的表上执行搜索,可以应用许多运算符:start with,contains,equal,in the list。。。 如果我搜索
Müller
我还想检索
Mueller
ue
是德语中
u
的翻译),其他带有重音的字母也是如此,我知道可以通过修改
NLS_COMP
NLS_排序来实现这一点

SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;
我还知道可以在列级别进行排序,但这仅在12.2版之后才可用, 有什么想法吗

谢谢你的帮助

比尔

我已经用oracle解决了我的问题

 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

这对我的EF4很有用:

using (var context = new Entities()) {

    // Set Case Insensitive, Accent Insensitive

    var orcl = (OracleConnection)(((System.Data.EntityClient.EntityConnection)(context.Connection)).StoreConnection);

    if (context.Connection.State != System.Data.ConnectionState.Open)
    {
        context.Connection.Open();
    }

    var sInfo = orcl.GetSessionInfo();

    sInfo.Sort = "GENERIC_M_AI";
    sInfo.Comparison = "LINGUISTIC";

    orcl.SetSessionInfo(sInfo);

    // Execute linq query

    var row = context.table.Where(a => a.varcharField.Contains("match str")).FirstOrDefault();

}

可能重复不,这不是重复,这种方法不适用于所有字母请添加更多示例,您的
Mestlé
适用于解决方案我已更新了我的问题最后我将使用NLS_COMP和NLS_排序参数,您是否知道hoaw可以在执行查询之前使用entity framework设置oracle会话参数?