2012-03-23 99 views
0

在运行以下附上我的代码收到错误索引属性错误:必须是合格和参数显式提供

"EntityCommandExecutionException was unhandled by user code.

然后有人告诉我一下详细信息的内部异常...还有我看到数据下:

"In order to evaluate an indexed property, the property must be qualified and the arguments must be explicitly supplied by the user."

和下内部异常 - >消息:

"A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The handle is invalid.)"

Ť他编写的Visual Studio认为是有过错的是:

Dim qpeople = (From p In dbContext2.PEOPLE _ 
            Where p.PEOPLE_ID = ID _ 
            Order By p.CREATE_DATE Descending _ 
            Select p).FirstOrDefault 

较大的代码背景是:

Protected Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 
    Dim semester As String = ddlwhSemester.SelectedValue 
    Dim year As String = txtwhYear.Text 
    Dim exists As String = "N" 
    Dim pcsemester As String = ddlSemester.SelectedItem.Text 
    Dim pcyear As String = ddlYear.SelectedItem.Text 
    Using dbContext As pbu_housingEntities = New pbu_housingEntities 
     ' Get the list of residents in webHousing. 
     Dim qresidents = (From p In dbContext.Residents _ 
          Where p.semester = semester _ 
          Where p.year = year _ 
         Select p.people_code_id) 
     Using dbContext2 As Campus6Entities = New Campus6Entities 
      ' Get the list of students in PowerCampus. 
      Dim qstudents = (From p In dbContext2.RESIDENCies _ 
          Join a In dbContext2.ACADEMICs _ 
          On a.PEOPLE_CODE_ID Equals p.PEOPLE_CODE_ID _ 
          Where p.ACADEMIC_TERM = pcsemester _ 
          Where p.ACADEMIC_YEAR = pcyear _ 
          Where a.ACADEMIC_TERM = pcsemester _ 
          Where a.ACADEMIC_YEAR = pcyear _ 
          Where a.PROGRAM = "UND" _ 
          Where (a.CLASS_LEVEL = "FR" _ 
          Or a.CLASS_LEVEL = "FRNR" _ 
          Or a.CLASS_LEVEL = "FRST" _ 
          Or a.CLASS_LEVEL = "SO" _ 
          Or a.CLASS_LEVEL = "JR" _ 
          Or a.CLASS_LEVEL = "SR" _ 
          Or a.CLASS_LEVEL = "SR5" _ 
          Or a.CLASS_LEVEL = "Tran") _ 
          Select p.PEOPLE_ID).Distinct 
      For Each row In qstudents 
       exists = "N" 
       For Each res In qresidents 
        If row.ToString = res.ToString Then 
         exists = "Y" 
        End If 
       Next 
       If exists = "Y" Then 
        ' Skip adding. 
       Else 
        ' Add a row. 
        ' Get the ID 
        Dim ID As String = row 
        ' Get info from PowerCampus 
        Dim qpeople = (From p In dbContext2.PEOPLE _ 
            Where p.PEOPLE_ID = ID _ 
            Order By p.CREATE_DATE Descending _ 
            Select p).FirstOrDefault 
        Dim people_code_id As String = qpeople.PEOPLE_CODE_ID 
        Dim qacademic = (From p In dbContext2.ACADEMICs _ 
            Where p.PEOPLE_CODE_ID = people_code_id _ 
            Where p.ACADEMIC_TERM = pcsemester _ 
            Where p.ACADEMIC_YEAR = pcyear _ 
            Order By p.CREATE_DATE Descending _ 
            Select p.CLASS_LEVEL).FirstOrDefault 
        Dim qaddress = (From p In dbContext2.ADDRESSes _ 
            Where p.PEOPLE_ORG_CODE_ID = people_code_id _ 
            Where p.ADDRESS_TYPE = "Perm" _ 
            Order By p.CREATE_DATE Descending _ 
            Select p).FirstOrDefault 
        Dim qdemographics = (From p In dbContext2.DEMOGRAPHICS _ 
             Where p.PEOPLE_CODE_ID = people_code_id _ 
             Order By p.CREATE_DATE Descending _ 
             Select p.GENDER).FirstOrDefault 

        ' Create the new occupant. 
        Dim newres As New Resident 
        newres.people_code_id = ID 
        newres.person_name = qpeople.FIRST_NAME + " " + qpeople.MIDDLE_NAME + " " + qpeople.LAST_NAME 
        newres.first_name = qpeople.FIRST_NAME 
        newres.last_name = qpeople.LAST_NAME 
        newres.class_level = qacademic 
        newres.gender = qdemographics 
        newres.semester = semester 
        newres.year = year 
        newres.email = qaddress.EMAIL_ADDRESS 
        newres.create_date = Date.Now 
        dbContext.Residents.AddObject(newres) 
        dbContext.SaveChanges() 
       End If 
      Next 
     End Using 
    End Using 
End Sub 

回答

1

之前我没有注意到这一点,但你设置你的ID是这样的:

Dim ID As String = row 

尝试LINQ查询之前的ID转换成int类型。

+0

Geez,我试过所有的东西和它的母亲让这个东西工作(完全重写上面的代码),修复很简单。 – davemackey 2012-03-26 13:22:35

+0

那么,那工作...不幸的是,我后来意识到,我把它设置为字符串的原因是B/C整数切断了前导零 - 并且,不幸的是,其他数据库使用前导零。 – davemackey 2012-03-26 18:28:13

+0

在任何地方使用PEOPLE_CODE_ID解决前导零问题,因为它总是以字母P开头。 – bendodge 2018-03-07 17:26:45

1

检查你的数据库,并确保主键是存在的。我有类似的问题,发现主键没有定义。只是一个想法,可能不是问题,但值得快速检查。

+0

感谢您的想法...不幸的是,它已被设置为主键...所以没有运气的简单修复。 : -/ – davemackey 2012-03-23 14:56:28

相关问题