2009-05-29 8 views
1

SubSonic 2.2. Ich benutze das Repository-Muster, mit einer Tabelle "Termin" mit einem Termin als automatisch inkrementieren int.Seltsame seltsame Dinge, die im Repository-Datensatz passieren!

Ich versuche, es zu aktualisieren, aber wenn ich die Felder mit etwas völlig anderem aktualisieren, sind schmutzige Spalten immer Null, und ich bekomme eine Ausnahme.

System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. bei SubSonic.DataService.ExecuteQuery (QueryCommand cmd) bei SubSonic.SubSonicRepository.Update [T] (RepositoryRecord 1 item, String userName) at janji.Janji.Data.DB.Update[T](RepositoryRecord 1 Element) in A: \ Source \ VS2008 \ Web \ Apps \ Janji \ Janji \ Classes \ DAL \ AllStructs.vb: Zeile 197 bei janji.WebForm4.SaveData() in A: \ Source \ VS2008 \ Web \ Apps \ Janji \ Janji \ UI \ Appt.aspx.vb: Linie 343

Hier ist mein Code:

 Try 
     If Appointment.AppointmentId > 0 Then 

      Appointment.AddressName = uxHotel.Text 
      Appointment.Address = uxAddress.Text 
      Appointment.AppStartTime = Date.Parse(uxApptDate.SelectedDate.Value.ToShortDateString + " " + uxApptStartTime.SelectedDate.Value.ToShortTimeString) 
      Appointment.ApptEndTime = Date.Parse(uxApptDate.SelectedDate.Value.ToShortDateString + " " + uxApptEndTime.SelectedDate.Value.ToShortTimeString) 
      Appointment.Completed = uxCOmpleted.Checked 
      Appointment.DropNumber = uxDropNum.Text 
      Appointment.Total = 0 
      Appointment.EmployeeId = 0 
      Appointment.Model = uxModel.Text 
      Appointment.DropAmount = Decimal.Parse(uxDropAmount.SelectedValue) 
      Appointment.RoomNumber = uxRoom.Text 

      'If Appointment.DirtyColumns.Count > 0 Then 
      Janji.Data.DB.Update(Of Janji.Data.Appointment)(Appointment) 
      'End If 
     End If 
    Catch ex As Exception 
     _ErrorMessage = ex.ToString 
     RetVal = False 
     lErrors.Text = _ErrorMessage 
     lErrors.Visible = True 
    End Try 
+0

Ich kann nicht ganz folgen, was Sie hier tun. Kannst du etwas mehr zusammenfassen? Ist das eine Instanz oder benutzen Sie die Strukturen? Es sieht für mich so aus, als ob du die Strukturen verwendest und kein Objekt instanziierst. –

+0

Ich erstelle es wie folgt: _Appointment = New SubSonic.Select(). Von (Janji.Data.Tables.Appointment). Wo (Janji.Data.Appointment.Columns.AppointmentId) .IsEqualTo (CallLog.ApptId) .ExecuteSingle (Of Janji.Data.Appointment)() –

+0

Auch: schmutzige Spalten ist immer 0, auch nach dem Festlegen von Eigenschaften. Wenn ich als "markClean" markiere, schlägt das Update NICHT fehl, aber nichts wird aktualisiert. –

Antwort

2

Sie verwenden die von uns bereitgestellten Structs, anstatt ein Terminobjekt zu instanziieren. Tun Sie alles, was Sie hier tun, aber erstellen Sie eine Termininstanz und weisen Sie ihr die Werte zu. Übergeben Sie diese Instanz dann an den Repo.