Пожалуйста, помогите мне, как установить параметры сортировки столбцов, если таблица создается из определения класса с использованием 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 имеет чувствительную к регистру сортировку столбцов для текстовых столбцов.
IЯ хотел бы создать текстовые столбцы с 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;
}
Работает, но есть ли более удобный способ добиться того же?