0

我有一些 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的东西吗?

4

1 回答 1

0

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

于 2013-09-13T17:37:24.687 回答