2009-05-29 25 views
1

サブソニック2.2。私は自動増分intとしてappointmentIdを持つテーブル "appointment"を持つリポジトリレコードパターンを使用します。奇妙なことがリポジトリレコードで起こっています!

私はそれを更新しようとしていますが、フィールドを全く別のものに更新すると、ダーティーな列は常にゼロになり、例外が発生します。

System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 SubSonic.DataService.ExecuteQuery(QueryCommand cmd)で、SubSonic.SubSonicRepository.Update([RepositoryRecord 1 item, String userName) at janji.Janji.Data.DB.Update[T](RepositoryRecord 1アイテム])をA:\ Source \ VS2008 \ Web \ Apps \ janji \ janji \ Classes \ DAL \ AllStructs.vbに保存します。中janji.WebForm4.SaveData(で197):\ janji \ UI \ Appt.aspx.vb \ソース\ VS2008 \ウェブ\アプリ\ janji:ライン343

はここに私のコードです:

 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

私はあなたがここでやっていることに全く従うことができません。あなたはもう少し要約できますか?それはインスタンスですか、あなたは構造体を使用していますか?あなたが構造体を使用していてオブジェクトをインスタンス化していないように見えます。 –

+0

私は次のように作成しています: _Appointment = New SubSonic.Select()。(Janji.Data.Tables.Appointment)から。 (Janji.Data.Appointment.Columns.AppointmentId).IsEqualTo(CallLog.ApptId).ExecuteSingle(Of Janji.Data.Appointment)() –

+0

また、プロパティを設定した後でも、ダーティー列は常に0です。 "markClean"とマークした場合、更新は失敗せず、何も更新されません。 –

答えて

2

Appointmentオブジェクトをインスタンス化する代わりに、私たちが提供するStructsを使用しています。あなたがここでやっていることはすべて行いますが、Appointmentインスタンスを作成して値を割り当てます。その後、そのインスタンスをリポジトリに渡します。

関連する問題