private leeres InternalUpdateEntity (DataRow [] Reihen, ValidationErrorCollection vaeCollection, UpdateAction UpdateAction, Boolesches DoCommit)
{
Gegenstandwesen = -null;
wenn (Rows.Length == 1)
Wesen = Reihen [0];
sonst wenn (Rows.Length > 1 && rudert [0]. Tabelle! = Null)
Wesen = Reihen [0]. Tabelle;
sonst
Rückkehr;
wenn (vaeCollection.IsCollectionValid && Wesen! = Null)
{
Boolesches ConcurrencyError = falsch;
Anwendung (TransactionScope Ts = ((this.ParentTransaction == Null)? neues TransactionScope (): neues TransactionScope (this.ParentTransaction)))
{
Versuch
{
wenn (this.ParentTransaction == Null)
this.ParentTransaction = Transaction.Current.DependentClone (DependentCloneOption.BlockCommitUntilComplete);
wenn (UpdateAction == UpdateAction.Update)
{
wenn (Wesen ist ISaveable || Wesen ist ISaveMultipleRows)
{
wenn (Wesen ist ISaveMultipleRows && Rows.Length > 1)
((ISaveMultipleRows) Wesen). Speichern (Reihen);
sonst
((ISaveable) Wesen). Speichern ();
}
}
sonst, wenn (UpdateAction == UpdateAction.Delete)
{
wenn (Wesen ist IDeleteable || Wesen ist IDeleteMultipleRows)
{
wenn (Wesen ist IDeleteMultipleRows && Rows.Length > 1)
{
((IDeleteMultipleRows) Wesen) .DeleteObject (Reihen);
wenn (DoCommit)
((IDeleteMultipleRows) Wesen) .CommitDeletedObject (Reihen);
}
sonst
{
((IDeleteable) Wesen) .DeleteObject ();
wenn (DoCommit)
((IDeleteable) Wesen) .CommitDeletedObject ();
}
}
}
Ts.Complete ();
}
Fang (TransactionAbortedException ex)
{
wenn (this.DatabaseUpdateError! = Null)
{
Mitteilung aufreihen = „Fehler \ r \ n“;
wenn (ex.InnerException! = Null)
Mitteilung += ex.InnerException.Message + „\ r \ nStacktrace: “ + ex.InnerException.StackTrace;
sonst
Mitteilung += ex. Mitteilung + „\ r \ nStacktrace: “ + ex.StackTrace;
this.DatabaseUpdateError (neues ExceptionEventArgs (Mitteilung));
}
sonst wenn (ex.InnerException! = Null)
Wurf ex.InnerException;
sonst
Wurf ex;
}
Fang (DBConcurrencyException dex)
{
wenn (ConcurrencyErrorOccured! = Null)
this.ConcurrencyErrorOccured (dex. Reihe, neues EventArgs ());
//ConcurrencyError = richten aus;
Ts.Dispose ();
Rückkehr;
}
}
}
}
|