예제 #1
0
 /// <summary>
 /// Führt alle Aktualisierungsaufträge aus der Queue auf dem Entity aus.
 /// Wenn erfolgreich, dann ist die UpdateJobs Queue leer
 /// </summary>
 /// <param name="BoTarget">zu aktualisierendes Entity</param>
 /// <param name="QueuedJobsForPropertiesUpdate">Warteschlange mit Aktualsierungsaufträgen</param>
 public static void UpdateBo(Bo.ICoreData <TBo> BoTarget, Queue <Action <TBo> > QueuedJobsForPropertiesUpdate, bool PreserveChangeTrackingItems = false)
 {
     if (!PreserveChangeTrackingItems)
     {
         while (QueuedJobsForPropertiesUpdate.Any())
         {
             // Der schnöngefinkelte Lambdaausdruck wird ausgeführt, wodurch die Aktualisierung der
             // Entity- Eigenschaft implementiert wird
             QueuedJobsForPropertiesUpdate.Dequeue()(BoTarget.GetCore);
         }
     }
     else
     {
         UpdateBoAndPreserveChangeTrackingItems(BoTarget, QueuedJobsForPropertiesUpdate);
     }
 }
예제 #2
0
        /// <summary>
        /// Führt alle Aktualisierungsaufträge aus der UpdateJobs- Queue auf dem
        /// Entity aus und stellt die Aktualisierungaufträge für eine wiederholte
        /// Ausführung in die Queue wieder ein.
        /// </summary>
        /// <param name="BoTarget">zu aktualisierendes Entity</param>
        /// <param name="QueuedJobsForPropertiesUpdate">Warteschlange mit Aktualisierungsaufträgen</param>
        static void UpdateBoAndPreserveChangeTrackingItems(Bo.ICoreData <TBo> BoTarget, Queue <Action <TBo> > QueuedJobsForPropertiesUpdate)
        {
            int Count = QueuedJobsForPropertiesUpdate.Count;

            for (int i = 0; i < Count; i++)
            {
                // Aktualisierungsauftrag der Warteschlange entnehmen
                var updJob = QueuedJobsForPropertiesUpdate.Dequeue();

                // Der schnöngefinkelte Lambdaausdruck wird ausgeführt, wodurch die Aktualisierung der
                // Entity- Eigenschaft implementiert wird
                updJob(BoTarget.GetCore);
                // Ausgeführten Job wieder in Warteschlange einstellen
                QueuedJobsForPropertiesUpdate.Enqueue(updJob);
            }
        }
예제 #3
0
 /// <summary>
 /// Alle aktualisierungsaufträge werden auf einem Entity ausgeführt, das z.B. aus einem
 /// EF- Datenkontext einer Datenbank stammt
 /// </summary>
 /// <param name="exTBoTarget">Referenz auf externes Entity</param>
 public void UpdateExternalBo(Bo.ICoreData <TBo> exTBoTarget, bool PreserveChangeTrackingItems = false)
 {
     Debug.Assert(exTBoTarget != this);
     BoWithChangeTracking <TBo> .UpdateBo(exTBoTarget, QueuedJobsForPropertiesUpdate, PreserveChangeTrackingItems);
 }