oracle - 使用 linq toEntity (EF) 和 Oracle 12.1 忽略搜索重音

标签 oracle entity-framework collation

我需要在一个包含重音符号的字符串字段的表上执行搜索,可以应用许多运算符:开始于、包含、等于、在列表中... 如果我搜索 Müller,我还想检索 Mueller(ue 是德语 ü 的翻译) ,对于其他有重音的字母也是如此,我知道可以通过修改 NLS_COMPNLS_SORT

来实现这一点
SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;

我还知道可以在列级别进行排序规则,但这仅从 12.2 版本开始可用, 有什么想法吗?

感谢您的帮助,

比勒尔

最佳答案

我用过oracle NLS session parameters解决我的问题。

 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);
}

文档可用 here对于OracleGlobalization

关于oracle - 使用 linq toEntity (EF) 和 Oracle 12.1 忽略搜索重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648005/

相关文章:

oracle - Oracle 是否有与 T-SQL PRINT 语句等效的语句?我想显示脚本进度

oracle - 从 Oracle 数据文件恢复数据库

oracle - PLS-907 无法加载库单元

c# - 在 Entity Framework 中测试预先存在的记录的最佳方法是什么?

c# - ExpressMapper/EntityFramework - 没有为此对象定义无参数构造函数

sql-server - 是否可以让 SQL Server 将排序规则转换为 UTF-8/UTF-16

mysql - 相似字符的唯一约束违规

ruby-on-rails - 在 ubuntu 14.04 x64 上安装 ruby​​-oci8 时出错

c# - 获取 "The entity type <model> is not part of the model for the current context."

sql-server - 当我的 SQL Server 数据库设置为 Latin1_General_100_CI_AI 时出现大小写和排序规则问题