Activerecord 亚音速3的铸造问题
保存具有integere主键的行时,VB版本中会引发以下异常: 找不到类型“Decimal”上的“Public member”ChangeTypeTo“ 这发生在ActiveRecord.VB文件第3406行: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
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#项目,现在它工作得非常好。再次感谢。转基因的