如何使用带有CreateTable的linq2db设置SQLite COLLATE NOCASE列?

如何使用带有CreateTable的linq2db设置SQLite COLLATE NOCASE列?,sqlite,linq2db,Sqlite,Linq2db,如果表是使用linq2db从类定义创建的,请帮助我如何设置列排序规则? 我使用linq2db 2.6.3从SQLite本地应用程序数据库获取数据 应用程序中有一种工作模式,如果数据库不存在,它将创建数据库 它看起来像是code-first方法,数据库是使用DataConnection.CreateTable扩展构建的 void CreateTableIfNotExists<TDto>(DataConnection conn) { var sp = conn.DataProvi

如果表是使用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>();
    }
}
我发现的唯一一种方法是设置列格式,并将
collatenocase
附加到格式字符串中,如下所示

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

它可以工作,但是有没有更方便的方法来实现同样的目标?

没有,现在它是唯一受支持的方法。我们以前考虑过为
createtable
添加排序规则支持,但没有人要求它。您可以创建特征request@DLuk我明白了,谢谢。这些情况似乎很少见,所以我将使用CreateFormat属性。不,现在它是唯一受支持的方法。我们以前考虑过为
createtable
添加排序规则支持,但没有人要求它。您可以创建特征request@DLuk我明白了,谢谢。似乎这些情况非常罕见,所以我将使用CreateFormat属性。
// 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;
}