在使用iBATIS.NET将数据映射到SQLite数据库我希望能够通过从英文字母稍有不同的字母,以特定的列进行排序C#应用程序(也有一些特殊字符和一些字符的顺序是不同的) 。 我想从数据库中已排序的结果得到的,因为在应用程序本身分拣由于分页是不可能的。
经过一番研究,我得出的结论是应用自定义归类可能是唯一的选择在这里。 这是结论正确吗?
然而,我无法了解这是怎么在上面描述的情况来完成。 iBATIS的API看似无关与排序规则,我没有看到一个明显的方式来实现这一摆弄数据库配置。 那么,怎么可能这样做?
用户定义的函数和归类是ADO.NET驱动器的功能,而不是在它之上坐在ORM。 SQLite的ADO.Net驱动程序不会允许您定义自定义函数,检查第二这个问题的答案 :
/// <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的价格叫