gpt4 book ai didi

SQLite Int64 vs Int32 问题和 SubSonic ActiveRecord

转载 作者:行者123 更新时间:2023-12-03 16:45:25 26 4
gpt4 key购买 nike

我以为这在其他地方有介绍,但我现在没有看到。无论如何,在使用简单的 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 )

我的 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 作为标识列,但不知道为什么/如何在 Structs 将其设为 Int32 时 SubSonic 处理转换。

帮助?!

谢谢..

最佳答案

我们在最新版本中修复了这个问题 - SQLite.tt 文件没有正确地将整数 PK 转换为 long (int 64)。如果您在 Github 上获取最新信息,则应该可以解决。确保你从模板项目中抓取。

关于SQLite Int64 vs Int32 问题和 SubSonic ActiveRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1334672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com