使用dbContexts变量不可用?

时间:2011-05-31 19:12:32

标签: asp.net vb.net variables linq-to-entities

我有以下代码,在使用dbPC中调用getOc​​cupants时会抛出错误。有没有办法在使用dbPC时访问此值?或者更好的方法来实现这一目标?我尝试使用dbPC在使用dbContext中嵌套,但这也会引发错误。

  Protected Sub btnPushSemester_Click(sender As Object, e As EventArgs) Handles btnPushSemester.Click
    Dim dbPC As New Campus6Entities
    Dim dbContext As New pbu_housingEntities
    Using dbContext
        Dim get_Year = From p In dbContext.Configs _
                           Where p.Description = "year" _
                           Select p

        Dim get_Term = From p In dbContext.Configs _
                       Where p.Description = "term" _
                       Select p

        Dim thisYear = get_Year.First.textValue
        Dim thisTerm = get_Term.First.textValue
        Dim getOccupants = From p In dbContext.Residents _
                 Where p.semester = thisTerm _
                 Where p.year = thisYear _
                 Select p
    End Using
    Using dbPC
        For Each row In getOccupants
            Dim student_info = row
            Dim PCstudent = From r In dbPC.RESIDENCies _
                            Where student_info.people_code_id = r.PEOPLE_ID _
                            Where r.ACADEMIC_YEAR = thisYear _
                            Where r.ACADEMIC_TERM = thisTerm _
                            Select r

            For Each row2 In PCstudent
                Dim student_info2 = row2
                student_info2.DORM_BUILDING = student_info.Building1.building_code
                student_info2.DORM_ROOM = student_info.Room1.room1
                student_info2.RESIDENT_COMMUTER = "R"
                student_info2.DORM_CAMPUS = "O000000001"
                dbPC.SaveChanges()
            Next
        Next
    End Using

End Sub

2 个答案:

答案 0 :(得分:1)

由于延迟执行,在迭代集合之前实际上不会执行查询,但到那时,您已经处理了dbContext对象。尝试将所有代码包含在使用块中:

Using dbPC As New Campus6Entities
    Using dbContext As New pbu_housingEntities
        'rest of code here
    End Using
End Using

答案 1 :(得分:0)

在using块之外声明getOccupants。您可以在块内部进行分配,但是在实际需要使用它之前,您必须在外部声明它或它超出范围。