1

如果使用 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 对文本列有区分大小写的列排序规则。

我想用 like 创建文本COLLATE NOCASE

create table Test (
Name nvachar(255) null COLLATE NOCASE
)

我发现的唯一一种方法是设置列格式并附COLLATE 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;
}

它有效,但有更方便的方法来实现相同的目标吗?

4

0 回答 0