Activerecord 亚音速3的铸造问题

Activerecord 亚音速3的铸造问题,activerecord,subsonic3,Activerecord,Subsonic3,保存具有integere主键的行时,VB版本中会引发以下异常: 找不到类型“Decimal”上的“Public member”ChangeTypeTo“ 这发生在ActiveRecord.VB文件第3406行: Public Sub SetKeyValue(value As Object) Implements IActiveRecord.SetKeyValue If value IsNot Nothing AndAlso value IsNot DBNull.V

保存具有integere主键的行时,VB版本中会引发以下异常: 找不到类型“Decimal”上的“Public member”ChangeTypeTo“

这发生在ActiveRecord.VB文件第3406行:

        Public Sub SetKeyValue(value As Object) Implements IActiveRecord.SetKeyValue
        If value IsNot Nothing AndAlso value IsNot DBNull.Value Then
            Dim settable = value.ChangeTypeTo(Of Integer)()
我可以将最后一行更改为:

Dim settable = CInt(value)  'value.ChangeTypeTo(Of Integer)()
这将解决问题,直到我重新编译.tt文件

我的问题是,我如何在ActiveRecord.tt文件中更改它? tt文件中的代码如下所示:

Dim settable = value.ChangeTypeTo(Of <#=tbl.PK.SysType#>)()
Dim settable=值。将类型更改为(Of)()
感谢您的帮助


谢谢,生成的代码是正确的。您试图将十进制值强制转换为整数,这毫无意义。在这种情况下,编辑模板不是解决方案,您需要修复应用程序的逻辑。

我也遇到了VB模板的各种问题。看来亚音速开发者的焦点在C#。最后,我选择在另一个项目中使用C#模板,并从我的VB主应用程序中引用它。您试图进行的更改的问题是,您试图用一个具体的方法替换一个泛型方法,这并不是更好的方法<代码>引用主键的类型。如果只有整数主键,则可以将模板编辑为
Dim settable=CInt(value)
。否则,您需要GetType以了解
值的类型,然后使用
选择case
对到达方法的每个类型进行阿片转换

谢谢你回答我的问题,不过我没有用小数。该值是插入后返回的Id。数据库(SQL 2005)将键定义为Int,亚音速activeRecord的ID属性为Integer,但在Sub SetKeyValue(您可以在上面的代码中看到的Sub)中,该值是十进制的。同样,它插入记录,当它返回新ID(主键)时,会发生异常。下面是我在代码中所做的:Cust=New BV.BV_Customer copyTextboxesToCust()Cust.Save()有没有提示我可能会做错什么?但是,错误代码的最重要部分是将整型主键转换为十进制。为什么不返回搜索?谢谢您的输入。你是对的,VB模板似乎有问题。按照您的建议,我在解决方案中添加了一个C#类库项目,并使用了C#模板。我将我的参考(我的VB模板也在一个单独的项目中)更改为C#项目,现在它工作得非常好。再次感谢。转基因的