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