GetTempConnection() 공개 정적인 메소드

public static GetTempConnection ( ) : IDbConnection
리턴 IDbConnection
예제 #1
0
        public static bool isRemovable(GISADataset.NivelRow NivelRow, GISADataset.NivelRow NivelUpperRow, bool countUFs)
        {
            string filter = string.Empty;

            if (!countUFs)
            {
                filter = string.Format("rh.IDTipoNivelRelacionado != {0:d}", TipoNivelRelacionado.UF);
            }

            int  parentCount          = 0;
            int  directChildCount     = 0;
            bool moreThenOneParent    = false;
            bool notExistsDirectChild = false;
            bool connectionClose      = false;

            if (GisaDataSetHelper.GetConnection().State == ConnectionState.Closed)
            {
                connectionClose = true;
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetTempConnection());
                try
                {
                    parentCount          = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getParentCount(NivelRow.ID.ToString(), ho.Connection);
                    directChildCount     = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getDirectChildCount(NivelRow.ID.ToString(), filter, ho.Connection);
                    moreThenOneParent    = parentCount > 1;
                    notExistsDirectChild = directChildCount == 0;
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }

            return(!(TipoNivel.isNivelOrganico(NivelRow) && TipoNivel.isNivelOrganico(NivelUpperRow)) &&
                   (TipoNivel.isNivelOrganico(NivelRow) ||
                    (NivelRow != null && NivelRow.IDTipoNivel == TipoNivel.LOGICO && notExistsDirectChild) ||
                    (TipoNivel.isNivelOrganico(NivelUpperRow) && connectionClose && !moreThenOneParent && notExistsDirectChild) ||
                    ((NivelUpperRow == null || NivelUpperRow.IDTipoNivel == TipoNivel.DOCUMENTAL) && connectionClose && notExistsDirectChild) ||
                    (NivelUpperRow != null && NivelUpperRow.IDTipoNivel == TipoNivel.ESTRUTURAL && NivelRow.IDTipoNivel == TipoNivel.DOCUMENTAL && connectionClose && notExistsDirectChild && !moreThenOneParent) //permitir apagar séries/documentos soltos só com um produtor e sem niveis descendentes
                   ));                                                                                                                                                                                            // o estado da ligação tem de se ser fechado para que não ocorram situações de deadlock na BD
        }
예제 #2
0
		public static void ManageDatasetConstraints(bool @switch)
		{
            IDbConnection conn = GisaDataSetHelper.GetTempConnection();
            conn.Open();
            try
            {
#if DEBUG
                long start = DateTime.Now.Ticks;

                try
                {
                    GisaDataSetHelper.GetInstance().EnforceConstraints = @switch;
                }
                catch (ConstraintException ex)
                {
                    Trace.WriteLine("<EnforceContraints>");
                    Trace.WriteLine(ex.ToString());
                    GisaDataSetHelper.FixDataSet(GisaDataSetHelper.GetInstance(), conn);
                }
                catch (Exception e)
                {
                    Trace.WriteLine(e.ToString());
                    throw;
                }

                if (@switch)
                    Trace.WriteLine("EnforceContraints: " + new TimeSpan(DateTime.Now.Ticks - start).ToString());

#else
                if (GisaDataSetHelper.GetInstance().EnforceConstraints)
                {
                    //Trace.WriteLine("RELEASE MODE: EnforceConstraints = TRUE");
                    GisaDataSetHelper.GetInstance().EnforceConstraints = false;
                }
#endif
            }
            finally
            {
                conn.Close();
            }

        }