问题开始使用SubSonic 3 + ActiveRecord

时间:2009-08-14 23:42:57

标签: activerecord subsonic subsonic3

我正在努力从一个表对象中提取一个简单的记录列表并将其打印出来。

我有一个名为[Acceptance]的表,它有四个字段,其中两个允许空值。这是架构对象的ddl:

CREATE TABLE [dbo].[Acceptance](
    [AcceptanceID] [int] IDENTITY(1,1) NOT NULL,
    [AcceptanceCode] [nvarchar](2) NOT NULL,
    [AcceptanceDesc] [varchar](25) NOT NULL,
    [SortOrder] [tinyint] NOT NULL,
 CONSTRAINT [PK_Acceptance] PRIMARY KEY CLUSTERED 
(
    [AcceptanceID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

当我尝试使用以下代码将单个记录的单个字段呈现到控制台时:

var a = Acceptance.All();
            Console.WriteLine(a.First().AcceptanceID);
            Console.Read();

我得到以下异常:

System.ArgumentException未处理Message =“类型为'System.Byte'的对象'无法转换为'System.Boolean'类型。”

我的所有字段都不是Bit / Boolean类型。我只是没有得到它......

Nullable类型和Linq Query语法是我正在努力解决的两个主题......

非常感谢您对此如何正确的了解。

谢谢,

约什

3 个答案:

答案 0 :(得分:1)

你在使用什么数据库?我要猜MySQL ......你可以进入T4并改变系统类型的定义方式。对于SQLServer.tt的默认模板,MySQL是MySQL.tt。只需查看我们设置tinyint的位置 - 这是一个持续的问题(至少与我一起),返回byte [] vs bool - 根据需要设置。

答案 1 :(得分:1)

您是否有机会使用SQL Server Migration Assistant 2005进行访问?默认情况下,迁移向导会将timestamp列添加到数据类型为“timestamp”的所有表中。我记得这个字段引起的异常与使用SubSonic 3时报告的异常类似(如果不相同)。您可以通过工具>禁用时间戳列的创建。默认项目设置>添加时间戳列>从不。

答案 2 :(得分:0)

我也遇到了这个错误,上面的修复并没有解决我的问题,但GitHub的最新版本可以解决这个问题。

我希望很快就能解决所有这些松散的问题。