0

DataContext に問題があります。次のコード スニペットでは、最初にデータ コンテキスト内の既存のオブジェクトを削除し、後で同じコード内に新しいオブジェクトを追加します。問題は、.DeleteOnSubmit() を使用しているため、Datacontext に 2 つのエンティティがまだ含まれているため、データベースに正しく保存されていることです。

ここにコード:

public void ConnectedApartment(Apartment newApartment, Apartment existing)
{
    ConApart ConApartTemp = new ConApart();
    ConApartTemp.Apartment1 = newApartment;
    ConApartTemp.Apartment = existing;
    DatabaseConnection.ConAparts.InsertOnSubmit(ConApartTemp);
}

public void opdaterConApart(ArrayList connected, Apartment Apartmenten)
{
    foreach (ConApart sam in Apartmenten.ConAparts)
    {
      DatabaseConnection.ConAparts.DeleteOnSubmit(sam);
    }
    foreach (ConApart sam2 in Apartmenten.ConAparts1)
    {
      DatabaseConnection.ConAparts.DeleteOnSubmit(sam2);
    }

    foreach (Apartment apa in connected)
    {
      ConnectedApartment(apa, Apartmenten);
    }
    DatabaseConnection.SubmitChanges();
}

前に削除の SubmitChanges() を行わない場合

    foreach (Apartment apa in connected)
    {
      ConnectedApartment(apa, Apartmenten);
    }

次に、私の Datacontext には 2 つのエンティティが含まれ、変更のたびに GUI に重複が表示されます。

私が以下を使用する場合:

public void ConnectedApartment(Apartment newApartment, Apartment existing)
{
    ConApart ConApartTemp = new ConApart();
    ConApartTemp.Apartment1 = newApartment;
    ConApartTemp.Apartment = existing;
    DatabaseConnection.ConAparts.InsertOnSubmit(ConApartTemp);
}

public void opdaterConApart(ArrayList connected, Apartment Apartmenten)
{
    foreach (ConApart sam in Apartmenten.ConAparts)
    {
      DatabaseConnection.ConAparts.DeleteOnSubmit(sam);
    }
    foreach (ConApart sam2 in Apartmenten.ConAparts1)
    {
      DatabaseConnection.ConAparts.DeleteOnSubmit(sam2);
    }

    DatabaseConnection.SubmitChanges();

    foreach (Apartment apa in connected)
    {
      ConnectedApartment(apa, Apartmenten);
    }
    DatabaseConnection.SubmitChanges();
}

1.既存のオブジェクトを削除する 2.submitChanges 3.新しいオブジェクトを追加する 4.submitChanges

しかし、ポイント 2 と 3 の間で何かが失敗すると、削除されたオブジェクトは失われます。助言がありますか?コンテキストを維持して、二重エンティティでハングしないようにし、何か問題が発生した場合でもロールバック機能を処理するにはどうすればよいですか?

4

0 に答える 0