2011-01-24 7 views
0

基本的には、行を挿入し、その行を削除してから、再度同じ行の新しい行を挿入します。オブジェクトのキー値がObjectStateManager内の別のオブジェクトと競合するため、AcceptChangesを続行できません。AcceptChangesを呼び出す前にキー値が一意であることを確認してください。 deleteobject呼び出しが機能することを確認しました。どのようにしてレコードがなくなったのかを再認識できるようにオブジェクトスタンドマネージャーに知らせることができますか?Addto * - deleteobject - addto *はエラーをスローする

 Maps _newMaps = new Maps(); 

     _newMaps.map_page = "BLA"; 
     _newMaps.descr = "BLA test"; 
     opendb.AddToMaps(_newMaps); 

     opendb.SaveChanges(true); 


     foreach (var mapsrec in opendb.Maps) 
     { 
      opendb.DeleteObject(mapsrec); 
     } 
     opendb.SaveChanges(true); 

     Maps _sameMaps = new Maps(); 

     _sameMaps.map_page = "BLA"; 
     _sameMaps.descr = "BLA test"; 
     opendb.AddToMaps(_sameMaps); 

     opendb.SaveChanges(true); 

答えて

1

さらなる研究が、あなたもDeleteObjectの()を実行した後、あなたはそれが本当にそれを忘れする状態マネージャに追加)(オブジェクト(レコード)を取り外しする必要があることを示しています。したがって、レコードを追加したり、削除したり、同じキーを持つレコードを追加するコードは、次のようになります。

Maps _newMaps = new Maps(); 

    _newMaps.map_page = "BLA"; 
    _newMaps.descr = "BLA test"; 
    opendb.AddToMaps(_newMaps); 

    opendb.SaveChanges(true); 


    foreach (var mapsrec in opendb.Maps) 
    { 
     opendb.DeleteObject(mapsrec); 
     opendb.Detach(_newMapt); 
     opendb.SaveChanges(true); 
    } 


    Maps _sameMaps = new Maps(); 

    _sameMaps.map_page = "BLA"; 
    _sameMaps.descr = "BLA test"; 
    opendb.AddToMaps(_sameMaps); 

    opendb.SaveChanges(true); 
関連する問題