【问题标题】:SubSonic3 VB.Net Add,Update, FirstOrDefault ProblemsSubSonic3 VB.Net Add、Update、FirstOrDefault 问题
【发布时间】:2009-09-03 09:01:09
【问题描述】:

我使用 subsonic3 Vb.net 模板构建了 sctive 记录 dal。我正在处理亚音速 dll 中的很多错误。

1) 在 Add() 函数中:(我有修复) 当 indx 在数据库中有计数器时,返回的新键类型为十进制,活动记录文件有一个异常“公共成员'更改类型为'n 类型'未找到'十进制'”。 我设法修复了这个错误。我在 activeRecord 模板中更改了 sub

    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

   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)在更新函数()函数中:(我已经修复) 更新永远不会完成工作。在调试它之后,更新的 sql 语句永远不会有查询的“SET”dection,它总是像: 更新 [tableName] WHERE ... Subsonic.Repository dll 好像有问题 --> IRepository 的 例如,未在新对象中应用脏列:

  1. 将 Cat 调暗为 db.Category
  2. Cat.Indx=1
  3. Cat.SetIsNew(False)
  4. Cat.Name= '电机'
  5. 猫更新

为什么更新时没有 DirtyColumns 如何设置 Column 为 Dirty?

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

3) FirstOrDefault 函数:(无法修复) 总是我 meaaaaaaaaan 总是抛出 exsiption = "第 1 行:'(' 附近的语法不正确。" 来自 SubSonic.Linq dll

请帮忙

提前致谢, 教父

【问题讨论】:

  • 这里的问题真的太多了。我建议您将这个问题分成三个单独的问题,以便其他人更容易帮助/回答。

标签: vb.net activerecord subsonic3


【解决方案1】:

首先,您使用的是哪个版本的 SubSonic3?

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

2) 这不是你更新记录的方式,试试这个...

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

3) 如上例所示,Subsonic 使用SingleOrDefault()

【讨论】:

  • 主要问题:我正在使用带有 sqlServer 2000 的 SubSonic 3。FirstOrDefault 函数:总是我 meaaaaaaaaan 总是抛出 exsiption = "Line 1: Incorrect syntax near '('." from the SubSonic.Linq dll
  • 好的。但正如我所说,也许你应该使用 SingleOrDefault()?我上面的例子 (2) 对我有用,我不知道为什么它不适合你。
  • 或者也许下面的作品... cat = Category.Find(Function(item) item.CategoryID = 1).FirstOrDefault()
  • 感谢您的宝贵时间。你用 sql server 2000 试过了吗?我认为这是隐藏查询 sentax 的问题。在每个选择查询 subsonic3 中,在“SELECT”之后添加“TOP (n)”,并且这个语法在 sqlserver 2000 中使用,它应该是“TOP n”。所以知道我 99.999% 确定这是一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多