private kawitacyjny InternalUpdateEntity (DataRow [] Rząd, ValidationErrorCollection vaeCollection, UpdateAction UpdateAction, Boolowski DoCommit)
{
przedmiot Jednostka = null;
jeżeli (Rows.Length == 1)
Jednostka = Rząd [(0)];
inny jeżeli (Rows.Length > (1) && Wiosłować [(0)]. Stół! = null)
Jednostka = Rząd [(0)]. Stół;
inny
powrót;
jeżeli (vaeCollection.IsCollectionValid && Jednostka! = null)
{
Boolowski ConcurrencyError = fałszywy;
(TransactionScope Ts = ((this.ParentTransaction == null)? nowy TransactionScope (): nowy TransactionScope (this.ParentTransaction)))
{
próba
{
jeżeli (this.ParentTransaction == null)
this.ParentTransaction = Transaction.Current.DependentClone (DependentCloneOption.BlockCommitUntilComplete);
jeżeli (UpdateAction == UpdateAction.Update)
{
jeżeli (Jednostka być ISaveable || Jednostka być ISaveMultipleRows)
{
jeżeli (Jednostka być ISaveMultipleRows && Rows.Length > 1)
((ISaveMultipleRows) Jednostka). Save (Rząd);
inny
((ISaveable) Jednostka). Save ();
}
}
inny jeżeli (UpdateAction == UpdateAction.Delete)
{
jeżeli (Jednostka być IDeleteable || Jednostka być IDeleteMultipleRows)
{
jeżeli (Jednostka być IDeleteMultipleRows && Rows.Length > 1)
{
((IDeleteMultipleRows) Jednostka) .DeleteObject (Rząd);
jeżeli (DoCommit)
((IDeleteMultipleRows) Jednostka) .CommitDeletedObject (Rząd);
}
inny
{
((IDeleteable) Jednostka) .DeleteObject ();
jeżeli (DoCommit)
((IDeleteable) Jednostka) .CommitDeletedObject ();
}
}
}
Ts.Complete ();
}
chwyt (TransactionAbortedException transactionAbortedException)
{
jeżeli (this.DatabaseUpdateError! = null)
{
smyczkowy Wiadomość = "Fehler \ r \ n";
jeżeli (ex.InnerException! = null)
Wiadomość += ex.InnerException.Message + "\ r \ nStacktrace: " + ex.InnerException.StackTrace;
inny
Wiadomość += +=. Wiadomość + "\ r \ nStacktrace: " + ex.StackTrace;
this.DatabaseUpdateError (nowy ExceptionEventArgs (Wiadomość));
}
inny jeżeli (ex.InnerException! = null)
rzut ex.InnerException;
inny
rzut rzut;
}
chwyt (DBConcurrencyException dex)
{
jeżeli (ConcurrencyErrorOccured! = null)
this.ConcurrencyErrorOccured (dex. Rząd, nowy EventArgs ());
//ConcurrencyError = true;
Ts.Dispose ();
powrót;
}
}
}
}
|