1

У меня есть переменная, которая содержит целое число, которое я хочу сохранить в качестве значения для столбца (типа integer в базе данных sql и int32 в модели сущности), но когда я пытаюсь это я получаю сообщение об ошибке:Преобразование из строки "" в тип 'Double' недопустимо

"Conversion from string "" to type 'Double' is not valid"

Я очень смущен этим, так как я не использую строку или двойной? Проблема решений заключается в следующем:

UpdateBed.First.occupant = GetID 

А вот полный фрагмент кода:

Private Sub btnReserve_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnReserve.Click 
    Using dbContext As pbu_housingEntities = New pbu_housingEntities 
     ' Check that the room is still available. 
     Dim hall As String = CStr(Session("hall")) 
     Dim room As String = CStr(Session("room")) 
     Dim checkOccupants = From p In dbContext.Rooms _ 
          Let building_id = p.Building1.id _ 
          Where p.building_name = hall _ 
          Where p.room1 = room _ 
          Select p.current_occupancy, p.max_occupancy, p.id, building_id 

     If checkOccupants.First.current_occupancy >= checkOccupants.First.max_occupancy Then 
      ' If it isn't available, let the student know. 
      lblResult.Text = "Sorry, this room is now fully occupied. Please choose another room." 
     Else 
      ' If it is available, add the student to the room. 
      Dim Occupant As New Resident 
      Dim gender As String = CStr(Session("gender")) 
      Dim person_name As String = CStr(Session("person_name")) 
      Dim class_level As String = CStr(Session("class_level")) 
      Dim semester As String = CStr(Session("term")) 
      Dim people_code_id As String = CStr(Session("people_code_id")) 
      Dim first_name As String = CStr(Session("first_name")) 
      Dim last_name As String = CStr(Session("last_name")) 
      Dim building_id As String = checkOccupants.First.building_id 
      Dim room_id As String = checkOccupants.First.id 
      Occupant.building = building_id 
      Occupant.room = room_id 
      Occupant.gender = gender 
      Occupant.person_name = person_name 
      Occupant.class_level = class_level 
      Occupant.semester = semester 
      Occupant.people_code_id = people_code_id 
      Occupant.create_date = Date.Now 
      Occupant.first_name = first_name 
      Occupant.last_name = last_name 
      dbContext.Residents.AddObject(Occupant) 

      ' Increment the number of occupants in the room. 
      Dim UpdateOccupancy = (From p In dbContext.Rooms _ 
        Where p.building_name = hall _ 
        Where p.room1 = room _ 
        Select p).First 
      UpdateOccupancy.current_occupancy = UpdateOccupancy.current_occupancy + 1 

      ' Add the student to a bed. 
      Dim UpdateBed = From p In dbContext.Beds _ 
          Where p.building = building_id _ 
          Where p.room = room_id _ 
          Where p.occupant = "" _ 
          Select p 

      ' Get the student's ID from the residency table. 
      Dim GetID = (From p In dbContext.Residents _ 
         Where p.people_code_id = people_code_id _ 
         Order By p.id Descending _ 
         Select p.id).FirstOrDefault 

      UpdateBed.First.occupant = GetID 
      dbContext.SaveChanges() 
      lblResult.Text = "Success! You have successfully requested residency in this room!" 
     End If 
    End Using 
End Sub 
+1

Если GetID возвращает null, вы не сможете присвоить его типу 'int'. – slugster

+1

Каков тип 'p.id' и' UpdateBed.First.occupant'? – JaredPar

+0

Было бы полезно увидеть определение классов Bed и Resident. –

ответ

2

Эта строка в запросе LINQ ...

Where p.occupant = "" 

... и это присвоение ...

UpdateBed.First.occupant = GetID 

не похоже на fi t хорошо вместе (если GetID является Int32). Разве это не должно быть Where p.occupant = 0 или что-то в этом роде?

+0

Хорошая точка. Есть ли способ сказать, где p.occupant = NULL? – davemackey

+0

Хорошо, я ответил на свой вопрос. Я могу сделать это, если я введу «Нечто» вместо = «» ... и это исправляет ошибку. – davemackey

Смежные вопросы