private void DeleteReplicas(object filterEntity, PropertyInfo[] entityProps) { ParallelParam parallelParam = new ParallelParam() { Param1 = filterEntity, Param2 = PersistenceAction.Delete }; var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync); Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam); }
private void EditReplicas(object entity, object filterEntity, PropertyInfo[] entityProps, bool persistComposition) { ParallelParam parallelParam = new ParallelParam() { Param1 = entity, Param2 = PersistenceAction.Edit, Param3 = persistComposition, Param4 = filterEntity }; var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync); Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam); }
private void PersistReplicasAsync(object param) { try { foreach (var connString in _replicaConnStrings) { ParallelParam parallelParam = param as ParallelParam; object entity = parallelParam.Param1; PersistenceAction action = (PersistenceAction)parallelParam.Param2; bool persistComposition = false; if (parallelParam.Param3 != null) { persistComposition = (bool)parallelParam.Param3; } object filterEntity = null; if (parallelParam.Param4 != null) { filterEntity = parallelParam.Param4; } using (var repos = new GenericRepository <T>(DatabaseEngine.SQLServer, _connString)) { switch (action) { case PersistenceAction.Create: repos.CreateObject(entity, persistComposition, connString, true); break; case PersistenceAction.Edit: repos.EditObject(entity, filterEntity, persistComposition, connString, true); break; case PersistenceAction.Delete: repos.Delete(entity, connString, true); break; } } } } catch (Exception ex) { RegisterException("PersistReplicas", ex, param); } }
private void CreateReplicas(object entity, PropertyInfo[] entityProps, int lastInsertedId, bool persistComposition) { var entityColumnKey = EntityReflector.GetKeyColumn(entityProps); if (entityColumnKey != null) { entityColumnKey.SetValue(entity, lastInsertedId, null); } ParallelParam parallelParam = new ParallelParam() { Param1 = entity, Param2 = PersistenceAction.Create, Param3 = persistComposition }; var replicationParallelDelegate = new ParameterizedThreadStart(PersistReplicasAsync); Parallelizer.StartNewProcess(replicationParallelDelegate, parallelParam); }