当前位置:  开发笔记 > 数据库 > 正文

SQLite Int64与Int32问题和SubSonic ActiveRecord

如何解决《SQLiteInt64与Int32问题和SubSonicActiveRecord》经验,为你挑选了1个好方法。

我认为这在其他地方有所涉及,但我现在还没有看到.无论如何,有一个简单的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 sampAll = sqlsql .ExecuteTypedList();

设置为显示sqlsql值的断点显示:

{SELECT * FROM `SamplerData` WHERE ActiveState = @0}

然后代码抛出:

{"System.Int64类型的对象"无法转换为'System.Int32'类型."}

Visual Studio中的"查找"没有显示Int64转换发生的位置.我知道SQLite使用Int64作为标识列,但不知道为什么/如何在Structs使其成为Int32时处理转换的原因.

救命?!

谢谢..



1> 小智..:

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有