Ich dachte, dies wurde anderswo abgedeckt, aber ich sehe es jetzt nicht. Wie auch immer, ein Problem mit einer einfachen v3-Abfrage. Verwenden von SQLite ADO.NET-Provider 1.0.65.0. Meine Tabellenstruktur sieht wie folgt aus:SQLite Int64 vs Int32 Problem und SubSonic ActiveRecord
CREATE TABLE "SamplerData" ("RowId" INT PRIMARY KEY NOT NULL ,"SampName" VARCHAR(128),"SampPurpose" VARCHAR(2048),"ActiveState" INTEGER NOT NULL DEFAULT 1)
Meine Structs1.cs Datei hat das darin:
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
});
ich eine Abfrage in einer WPF-Code-Behind haben, die wie folgt aussieht:
SqlQuery sqlsql = new Select()
.From("SamplerData")
.Where("ActiveState")
.IsEqualTo(1);
List<SamplerDatum> sampAll = sqlsql .ExecuteTypedList<SamplerDatum>();
Ein Haltepunkt, der den Wert von sqlsq anzeigt, zeigt dies:
{SELECT * FROM `SamplerData` WHERE ActiveState = @0}
Dann wird der Code wirft mit:
{ "Objekt vom Typ 'System.Int64' nicht konvertiert werden kann 'System.Int32' eingeben"}
A "finden" in Visual Studio didn‘ t zeigen Sie mir, wo die Int64-Konvertierung stattfand. Ich verstehe, dass SQLite Int64 für Identitätsspalten verwendet, aber nicht warum/wie SubSonic die Konvertierung verarbeitet, wenn Structs es trotzdem zu Int32 macht.
Hilfe ?!
Dank ..
Wort hoch. Danke Rob! – Snowy