2012-01-30 2 views
-2

私のアプリケーションでは、AppointmentsとAppointmentTypesの間に多対多の結合があります。データベースが作成されると、AppointmentTypesAppointmentsというテーブルが結合テーブルとして作成されます。Entity Frameworkコードの最初の多対多の作成を試みる

複数の予定タイプを持つ新しい予定を作成して保存すると、参加テーブルが正しく読み込まれます。

ただし、予定の種類を変更せずに予定を編集して再度保存すると、アプリケーションは結合テーブル(AppointmentTypesAppointments)に重複したエントリを作成しようとします。

これらの重複する行を作成しようとするアプリケーションの停止方法を教えてください。

// appointments are fetched as a group... 
using (var context = new SchedulerContext()) 
     { 
      //return GetAll(); 
      IQueryable<Appointment> queryable = context.Appointments; 

      // check if any records exist 
      if (queryable.Count() == 0) 
      { 
       MessageBox.Show(@"No Appointment details found within the database"); 
      } 

      return queryable.ToList(); 
     } 
//----------------------------------------- 
// user then edits a single appointment and it is saved as below.... 
using (var context = new SchedulerContext()) 
{ 
    try 
    { 
     var originalEntity = context.Appointments.Where(x => x.Id == id).FirstOrDefault(); 
     context.Entry(originalEntity).CurrentValues.SetValues(appointment); 
     context.SaveChanges(); 
     return SuccessResult(); 
    } 
    catch 
    { 
     return OtherFailResult(id); 
    } 
} 
+1

この投稿は非常に不明です。説明し、保存メソッドとフェッチメソッドのコードを追加してください。 –

答えて

0

どのように編集して再保存しますか? EFは、既存のエンティティの更新を行っていることを知らないことは明らかです。それが追加か保存かを判断するには、存在を確認する必要があります。

+0

予定は、コンテキスト(例えば、コンテキストA)接続を使用して取り出される。レコードは編集され、新しいコンテキスト(例えばコンテキストB)を使用して再保存される。 – user1178078

+0

...続きを読む...(申し訳ありません)元のレコードをIDを使って新しいコンテキストに戻し、私が編集したアポイントメントを使って値を更新してから、context.Saveを実行して、コレクション – user1178078

+0

私はそれが問題かもしれないと思います、なぜあなたは二つの文脈が必要でしょうか。私たちはあなたを助けることができるように、いくつかのコードを投稿してください。 –

関連する問題