【问题标题】:linq to sql updates on for loop but not on while looplinq to sql 在 for 循环上更新,但在 while 循环上不更新
【发布时间】:2013-09-13 17:23:52
【问题描述】:

我有一些 linq to sql 代码。如果我将其作为 for 循环运行,它会更新底层数据库,如下所示:

      Dim myDC As MyDataClassDataContext = New MyDataClassDataContext
      Dim processThese As List(Of rec) = (From k In myDC.recs Where k.didSomeStuff = false select k).toList
        For Each o As rec In processThese 
            'do some stuff          
            o.didSomeStuff= True
            myDC.SubmitChanges()

        Next

但如果我这样运行它就不会了

    Dim myDC As MyDataClassDataContext = New MyDataClassDataContext
    While (From k In myDC.recs Where k.didSomeStuff  = False Select k).Count > 0
           Dim o as Rec = (From l in myDC.recs where l.didSomeStuff=false select l).first
           'do some stuff
           o.didSomeStuff=true
           mydc.submitchanges()
    end while

这可能是什么原因?有什么关于 while 循环会抛出 linq 的内容吗?

【问题讨论】:

  • 如果数据库没有更新,那么你应该有无限循环或根本没有循环。你的情况是什么?
  • @lazyberezovsky 无限循环

标签: .net vb.net linq


【解决方案1】:

我认为问题是您使用的上下文不同。在While 条件下,您使用的是myDC 上下文。但是当您要更新实体时,您使用的是DC 上下文。您从DC 获取实体,对其进行更改,然后将更改提交到另一个上下文myDC。因此没有提交任何内容(myDC 上下文中没有更改)并且您有无限循环。

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2014-12-07
    • 2017-05-21
    相关资源
    最近更新 更多