SubSonic3 VB.Net添加,更新,FirstOrDefault问题

时间:2009-09-03 09:01:09

标签: vb.net activerecord subsonic3

我喜欢使用subsonic3 Vb.net模板构建sctive record dal。我正在处理子声音中的很多错误。

1)在Add()函数中:(我有修复) 当indx在db中有计数器时,返回的新密钥类型为十进制,活动记录fil有一个例外“公共成员'更改类型为'n'类型'十进制'未找到”。 我设法修复了这个bug。我在activeRecord模板中更改了子

    Public Sub SetKeyValue(value As Object) Implements IActiveRecord.SetKeyValue
        If value IsNot Nothing AndAlso value IsNot DBNull.Value Then
            Dim settable = value.ChangeTypeTo(Of <#=tbl.PK.SysType#>)()
            Me.GetType.GetProperty(Me.KeyName()).SetValue(Me, settable, Nothing)
        End If
    End Sub

NEW

   Public Sub SetKeyValue(value As Object) Implements IActiveRecord.SetKeyValue
        If value IsNot Nothing AndAlso value IsNot DBNull.Value Then
            Dim settable = CType( value, <#=tbl.PK.SysType#>)
            Me.GetType.GetProperty(Me.KeyName()).SetValue(Me, settable, Nothing)
        End If
    End Sub 

2)在Update function()函数中:(我已修复)   更新永远不会做的工作。在调试它之后,更新的sql语句永远不会有查询的“SET”代码总是如下:           UPDATE [tableName] WHERE ...  似乎Subsonic.Repository dll中存在问题 - &gt; IRepository  Dirty Colums没有在新对象中使用,例如:

  1. Dim Cat as db.Category
  2. Cat.Indx = 1
  3. Cat.SetIsNew(False)
  4. Cat.Name ='Motors'
  5. Cat.Update
  6. 为什么更新时没有DirtyColumns如何将Column设置为Dirty?

    - 更新问题解决了它不是一个错误.-- 通过在第3行之后添加来解决:CAT.SetIsLoaded(True)。 因此,当propety IsLoaded设置为tru时,任何更新的列都将添加到DirtyColums并且这些列将被更新为DB

    3)FirstOrDefault功能:(无法修复) 总是我meaaaaaaaa总是抛出exsiption =“第1行:''''附近的语法错误。 来自SubSonic.Linq dll

    Pleeeeeeeeeeeease help

    先谢谢, TheGodfather

1 个答案:

答案 0 :(得分:0)

很简单,您使用的是哪个版本的SubSonic3?

1)不确定你在这里要做什么。

2)这不是你更新唱片的方式,试试这个......

Dim cat = Category.SingleOrDefault(Function(item) item.CategoryID = 1)
cat.CategoryName = "MOTORS"
cat.Update()

3)亚音速使用SingleOrDefault()如上例所示。