0

C# で LINQ レコードを更新しようとしていますが、SubmitChangesを呼び出すとエラーがスローされます。予定のスペルミスがあることは知っていますが、誤ってそのようにコーディングしてしまいました。与えられた例外/エラーは次のとおりです。

{"タイプ「予定」のオブジェクトのメンバー「Appiontment」の値が変更されました。\r\nオブジェクトの ID を定義するメンバーは変更できません。\r\n代わりに、新しい ID を持つ新しいオブジェクトを追加し、既存のものを削除することを検討してください。 ."} System.Exception {System.InvalidOperationException}

古いレコードを削除して新しいレコードを追加することは許可されていません。私のコードは次のとおりです。

public bool AppointmentReschedule(string patientFirstName, string patientLastName, string doctorFirstName, string doctorLastName, DateTime newTime)
{
   LINQClassesDataContext dc = new LINQClassesDataContext();

   try
   {
      Appointment a = getAppointment(patientFirstName, patientLastName, doctorFirstName, doctorLastName);
      if (a == null) throw new FaultException("Unable to retrieve appointment data");
      var appointments = dc.Appointments;

      foreach (Appointment b in appointments)
      {
         if (b.Appiontment == a.Appiontment && b.HealthInsuranceNo == a.HealthInsuranceNo && b.MedicalRegistrationNo == a.MedicalRegistrationNo)
         {
            b.Appiontment = newTime;
         }
      }
      dc.SubmitChanges();
   }

   catch (Exception ex)
   {
      throw new FaultException("Unable to update data");
   }
   return true;
}
4

1 に答える 1

2

列がAppiontmentテーブルの主キーの一部であるようです。テーブルに 1 つの主キーを導入することをお勧めします。挿入のたびに手動で追加するGuid( SQL の場合)、またはID 列として定義できる のいずれかです。uniqueidentifierint

于 2013-10-16T21:10:58.857 に答える