0

次のコードがありました:

 If Page.IsPostBack = False Then
        ' If prospect is coming from unique url
        Dim prospect_url As String = Page.RouteData.Values("value")
        ' Save prospect_url into session variable
        Session("prospect_url") = prospect_url
        Using dbContext As IRFEntities = New IRFEntities
            ' Prepopulate the states dropdown.
            Dim getStates = (From p In dbContext.IRF_States _
                             Order By p.name _
                            Select p)
            ddlState.DataSource = getStates
            ddlState.DataTextField = "name"
            ddlState.DataValueField = "id"
            ddlState.DataBind()
            ' Grab info. about prospect based on unique url.
            Dim getProspect = (From p In dbContext.IRF_Prospects _
                              Where p.url = prospect_url _
                              Select p).FirstOrDefault
            ' If they have a record...
            If getProspect IsNot Nothing Then
                'If IsDBNull(getProspect.user_id) Then
                If getProspect.user_id Is Nothing Then
                    ' Prepopulate the form with their information.
                    ' These must have a value, so we need to make sure that no column is null in the database.
                    txtFirst.Text = getProspect.first_name
                    txtLast.Text = getProspect.last_name
                    txtAddress.Text = getProspect.address
                    txtCity.Text = getProspect.city
                    ddlState.SelectedValue = getProspect.state
                    txtZip.Text = getProspect.zip
                    txtPhone.Text = getProspect.phone
                    txtEmail.Text = getProspect.email_address
                    txtYearEnrolling.Text = getProspect.enrolling_in
                Else
                    ' Redirect them to login.
                    Response.Redirect("login.aspx")
                End If
            End If
        End Using
    End If

次に、 ddlState.DataBind() のすぐ下に次を追加しました。

  ' Prepopulate the programs dropdown.
             Dim getPrograms = (From p In dbContext.IRF_Program _
                              Order By p.name _
                             Select p)
            ddlProgram.DataSource = getPrograms
            ddlProgram.DataTextField = "name"
            ddlProgram.DataValueField = "id"
            ddlState.DataBind()

今、私はエラーが発生します:

ObjectContext インスタンスは破棄され、接続を必要とする操作には使用できなくなりました

挿入されたコードをコメントアウトすると、コードは機能します。このコードが問題を引き起こしているのはなぜですか?

4

1 に答える 1

1

このオブジェクトを失いました:

dbContext

つまり、このオブジェクトのリソース (接続操作を含む) は既に破棄され、クリーンアップされています。別のドロップダウン リストをデータバインドする必要がある場合は、オブジェクトを再作成できます。

Dim dbContext as IRFEntities=Nothing

 Using dbContext= New IRFEntities
   //perform first databind
 End Using

 Using dbContext = New IRFEntities
  //code to perform second databind
 End Using
于 2012-09-11T18:19:10.163 に答える