如果表是使用linq2db从类定义创建的,请帮助我如何设置列排序规则?
我正在使用linq2db 2.6.3从SQLite本地应用程序数据库获取数据
应用程序中有一种工作模式,如果数据库不存在,它会创建数据库。
看起来像
Code first
方法和数据库是使用DataConnection构建的。CreateTable扩展
void CreateTableIfNotExists<TDto>(DataConnection conn)
{
var sp = conn.DataProvider.GetSchemaProvider();
var dbSchema = sp.GetSchema(conn);
var tableName = typeof(TDto).Name;
if (!dbSchema.Tables.Any(t => t.TypeName == tableName))
{
//no required table-create it
conn.CreateTable<TDto>();
}
}
默认情况下,SQLite对文本列具有区分大小写的列排序规则。
我想用
COLLATE NOCASE
喜欢
create table Test (
Name nvachar(255) null COLLATE NOCASE
)
我找到的唯一方法是设置列格式和附加
整理NOCASE
格式字符串,如下所示
// modified class from linq2db SQLiteTests.cs
[Table(Name = "CreateTableTest", Schema = "IgnoreSchema")]
public class CreateTableTest
{
[PrimaryKey, Identity]
public int Id;
[Column(CreateFormat = "{0} {1} {2} {3} COLLATE NOCASE")]
public string Name;
}
这是可行的,但有没有更方便的方法来实现同样的目标?