如果使用 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;
}
它有效,但有更方便的方法来实现相同的目标吗?