0

基本的に、行を挿入し、その行を削除してから、同じキーで新しい行を再度挿入します。savechanges の最後の行で例外がスローされます。deleteobject 呼び出しが機能することを確認しました。objectstatemanager に、レコードがなくなって再挿入できることを知らせるにはどうすればよいですか?

        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);
4

1 に答える 1

1

さらなる調査によると、状態マネージャーに追加したオブジェクト (レコード) を Detach() して、DeleteObject() を実行した後でも完全に忘れられるようにする必要があります。したがって、rec の追加、削除、同じキーを持つレコードの追加を可能にするコードは次のようになります。

    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);
于 2011-01-28T19:39:35.383 に答える