如何将自定义归类应用于SQLite数据库的特定列?

时间:2014-12-11 10:48:10

标签: c# sqlite sorting collation ibatis

在使用iBATIS.NET将数据映射到SQLite数据库的C#应用​​程序中,我希望能够通过与英文字母略有不同的字母对特定列进行排序(有一些特殊字符和一些字符的顺序是不同的)。我想从数据库中获取已经排序的结果,因为由于分页而无法在应用程序中进行排序。

经过一些研究后,我得出结论,应用自定义整理可能是唯一的选择。这个结论是否正确?

然而,我无法找到在所描述的情况下如何做到这一点。 iBATIS API似乎与排序规则无关,我没有看到一种明显的方法来实现对数据库配置的修改。那么,怎么办呢?

1 个答案:

答案 0 :(得分:4)

用户定义的函数和排序规则是ADO.NET驱动程序的一项功能,而不是位于其上的ORM。 SQlite ADO.Net驱动程序允许您定义自定义函数,请检查the second answer to this question

/// <summary>
/// User-defined collating sequence using the current UI culture.
/// </summary>
[SQLiteFunction(Name = "MYSEQUENCE", FuncType = FunctionType.Collation)]
class MySequence : SQLiteFunction
{
  public override int Compare(string param1, string param2)
  {
    return String.Compare(param1, param2, true);
  }
}

在与

一起使用之前,您需要在代码中注册该功能
SQLiteFunction.RegisterFunction(typeof(MySequence));

性能可能是一个问题,因为每次进行比较时您都要支付Interop通话的费用