在VB版本中抛出以下异常时保存具有integere主键的行: 未找到'Decimal'类型的'公共成员'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#>)()
感谢任何帮助。
由于
答案 0 :(得分:1)
我也遇到过VB模板的各种问题。这似乎是亚音速开发人员关注的重点是C#。最后,我选择在另一个项目中使用C#模板,并从我的VB主应用程序中引用它。您尝试进行的更改的问题在于您尝试将具体方法替换为通用方法,这不是更好。 <#=tbl.PK.SysType#>
引用主键的类型。如果您只有整数主键,则可以将模板编辑为Dim settable = CInt(value)
。否则,您需要GetType才能知道value
的类型,然后需要select case
来获取到达该方法的每种类型的适当转换。
答案 1 :(得分:0)
生成的代码是正确的。你试图将十进制值转换为整数,这没有任何意义。在这种情况下,编辑模板不是解决方案,您需要修复应用程序的逻辑。