コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }