Ejemplo n.º 1
0
        public InstanciaBaseDatosMerged Comparar(InstanciaBaseDatos referencia, IList <InstanciaBaseDatos> objetivos)
        {
            InstanciaBaseDatosMerged retorno = new InstanciaBaseDatosMerged();

            foreach (BaseDatos baseDatosReferencia in referencia.BasesDatos)
            {
                foreach (InstanciaBaseDatos instanciaObjetivo in objetivos)
                {
                    bool existeBaseDatos = false;
                    foreach (BaseDatos baseDatosObjetivo in instanciaObjetivo.BasesDatos)
                    {
                        if (baseDatosReferencia.Nombre == baseDatosObjetivo.Nombre)
                        {
                            existeBaseDatos = true;

                            BaseDatosMerged dbM = CompararBaseDatos(baseDatosReferencia, baseDatosObjetivo);
                        }
                    }
                    if (!existeBaseDatos)
                    {
                        BaseDatosMerged dbM = new BaseDatosMerged();
                        dbM.Nombre = baseDatosReferencia.Nombre;
                        foreach (Tabla tabla in baseDatosReferencia.Tablas)
                        {
                            TablaMerged tablaMerged = new TablaMerged();
                            tablaMerged.Nombre = tabla.Nombre;
                            foreach (Campo campo in tabla.Campos)
                            {
                                tablaMerged.CamposInexistentesEnObjetivo.Add(campo);
                            }
                            dbM.TablasInexistentesEnObjetivo.Add(tablaMerged);
                        }
                        retorno.BasesDatosInexistentesEnObjetivo.Add(dbM);
                    }
                }
            }

            //IList<BaseDatos> lista = objetivos.Where(c=>c.BasesDatos.Where(z => referencia.BasesDatos.Count(a=> a.Nombre == a.Nombre) == 0).Select(a=>a)).ToList();

            //BaseDatosMerged dbM = new BaseDatosMerged();
            //dbM.Nombre = baseDatosReferencia.Nombre;
            //foreach (Tabla tabla in baseDatosReferencia.Tablas)
            //{
            //    TablaMerged tablaMerged = new TablaMerged();
            //    tablaMerged.Nombre = tabla.Nombre;
            //    foreach (Campo campo in tabla.Campos)
            //    {
            //        tablaMerged.CamposInexistentesEnObjetivo.Add(campo);

            //    }
            //    dbM.TablasInexistentesEnObjetivo.Add(tablaMerged);
            //}
            //retorno.BasesDatosInexistentesEnObjetivo.Add(dbM);


            //retorno.BasesDatosInexistentesEnReferencia = ;

            return(retorno);
        }
Ejemplo n.º 2
0
        public BaseDatosMerged CompararBaseDatos(BaseDatos referencia, BaseDatos objetivo)
        {
            BaseDatosMerged retorno = new BaseDatosMerged();

            foreach (Tabla tablaReferencia in referencia.Tablas)
            {
                bool existeTabla = false;
                foreach (Tabla tablaObjetivo in objetivo.Tablas)
                {
                    if (tablaObjetivo.Nombre == tablaReferencia.Nombre)
                    {
                        existeTabla = true;
                        TablaMerged tabla = CompararTablas(tablaReferencia, tablaObjetivo);

                        if (tabla.CamposInConsistentes.Count > 0 || tabla.CamposInexistentesEnObjetivo.Count > 0 || tabla.CamposInexistentesEnReferencia.Count > 0)
                        {
                            retorno.TablasInConsistentes.Add(tabla);
                        }
                        else
                        {
                            retorno.TablasConsistentes.Add(tabla);
                        }
                    }
                }

                if (!existeTabla)
                {
                    TablaMerged tablaMerged = new TablaMerged();
                    tablaMerged.Nombre = tablaReferencia.Nombre;
                    foreach (Campo campo in tablaReferencia.Campos)
                    {
                        tablaMerged.CamposInexistentesEnObjetivo.Add(campo);
                    }
                    retorno.TablasInexistentesEnObjetivo.Add(tablaMerged);
                }
            }

            IList <Tabla> tablas = objetivo.Tablas.Where(c => referencia.Tablas.Count(x => x.Nombre == c.Nombre) == 0).ToList();

            IList <TablaMerged> tablasReferencia = new List <TablaMerged>();

            foreach (Tabla tabla in tablas)
            {
                TablaMerged tablaMerged = new TablaMerged();
                tablaMerged.Nombre = tabla.Nombre;
                foreach (Campo campo in tabla.Campos)
                {
                    tablaMerged.CamposInexistentesEnReferencia.Add(campo);
                }
                retorno.TablasInexistentesEnReferencia.Add(tablaMerged);
            }

            retorno.TablasInexistentesEnReferencia = tablasReferencia;

            return(retorno);
        }
        public string GenerarAlter(TablaMerged tabla)
        {
            string retorno = string.Empty;

            foreach (Campo campo in tabla.CamposInexistentesEnObjetivo)
            {
                retorno += string.Format("ALTER TABLE {0} ADD {1} {2}({3}) {4};\nGO\n\n", tabla.Nombre, campo.Nombre, campo.Tipo, campo.Largo, campo.PermiteNulo ? "NULL" : "NOT NULL");
            }

            foreach (Campo campo in tabla.CamposInexistentesEnReferencia)
            {
                retorno += string.Format("ALTER TABLE {0} ADD {1} {2}({3}) {4};\nGO\n\n", tabla.Nombre, campo.Nombre, campo.Tipo, campo.Largo, campo.PermiteNulo ? "NULL" : "NOT NULL");
            }

            return(retorno);
        }
Ejemplo n.º 4
0
        public TablaMerged CompararTablas(Tabla referencia, Tabla objetivo)
        {
            TablaMerged retorno = new TablaMerged();

            retorno.Nombre = referencia.Nombre;

            for (int i = 0; i < referencia.Campos.Count; i++)
            {
                Campo campoReferencia = referencia.Campos[i];
                bool  existeCampo     = false;
                for (int x = 0; x < objetivo.Campos.Count; x++)
                {
                    Campo campoObjetivo = objetivo.Campos[x];

                    if (campoReferencia.Nombre == campoObjetivo.Nombre)
                    {
                        if (campoReferencia.Tipo == campoObjetivo.Tipo)
                        {
                            if (campoReferencia.Largo == campoObjetivo.Largo)
                            {
                                retorno.CamposConsistentes.Add(campoObjetivo);
                            }
                            else
                            {
                                retorno.CamposInConsistentes.Add(campoObjetivo);
                            }
                        }
                        else
                        {
                            retorno.CamposInConsistentes.Add(campoObjetivo);
                        }
                        existeCampo = true;
                    }
                }
                if (!existeCampo)
                {
                    retorno.CamposInexistentesEnObjetivo.Add(campoReferencia);
                }
            }

            retorno.CamposInexistentesEnReferencia = objetivo.Campos.Where(c => referencia.Campos.Count(x => x.Nombre == c.Nombre) == 0).ToList();

            return(retorno);
        }