Я думал, что это было покрыто в другом месте, но я не вижу этого сейчас. Во всяком случае, возникли проблемы с простым запросом v3. Использование SQLite ADO.NET провайдера 1.0.65.0. Моя структура таблицы выглядит следующим образом:
CREATE TABLE "SamplerData" ("RowId" INT PRIMARY KEY NOT NULL ,"SampName" VARCHAR(128),"SampPurpose" VARCHAR(2048),"ActiveState" INTEGER NOT NULL DEFAULT 1 )
Файл My Structs1.cs содержит:
Columns.Add(new DatabaseColumn("RowId", this)
{
IsPrimaryKey = true,
DataType = DbType.Int32,
IsNullable = false,
AutoIncrement = false,
IsForeignKey = false
});
Columns.Add(new DatabaseColumn("SampName", this)
{
IsPrimaryKey = false,
DataType = DbType.AnsiString,
IsNullable = true,
AutoIncrement = false,
IsForeignKey = false
});
Columns.Add(new DatabaseColumn("SampPurpose", this)
{
IsPrimaryKey = false,
DataType = DbType.AnsiString,
IsNullable = true,
AutoIncrement = false,
IsForeignKey = false
});
Columns.Add(new DatabaseColumn("ActiveState", this)
{
IsPrimaryKey = false,
DataType = DbType.Int32,
IsNullable = false,
AutoIncrement = false,
IsForeignKey = false
});
У меня есть запрос в коде WPF, который выглядит следующим образом:
SqlQuery sqlsql = new Select()
.From( "SamplerData" )
.Where( "ActiveState" )
.IsEqualTo( 1 );
List<SamplerDatum> sampAll = sqlsql .ExecuteTypedList<SamplerDatum>();
Точка останова, установленная для отображения значения sqlsql, показывает это:
{SELECT * FROM `SamplerData` WHERE ActiveState = @0}
Затем код выдает:
{"Объект типа 'System.Int64' нельзя преобразовать в тип 'System.Int32'."}
«Найти» в Visual Studio не показывало, где происходило преобразование Int64. Я понимаю, что SQLite использует Int64 для столбцов идентификаторов, но не то, почему / как SubSonic обрабатывает преобразование, когда Structs в любом случае делает его Int32.
Помощь?!
Спасибо ..