public void CheckTable(Lfx.Types.OperationProgress progreso, Lfx.Data.Table table) { Lfx.Data.TableStructure CurrentTableDef = this.Connection.GetTableStructure(table.Name, true); progreso.ChangeStatus("Verificando tabla " + table.Name); foreach (Lfx.Data.ConstraintDefinition Cons in CurrentTableDef.Constraints.Values) { // Elimino valores 0 (los pongo en NULL) qGen.Update PonerNullablesEnNull = new qGen.Update(table.Name); PonerNullablesEnNull.ColumnValues.AddWithValue(Cons.Column, null); PonerNullablesEnNull.WhereClause = new qGen.Where(Cons.Column, 0); this.Connection.ExecuteNonQuery(PonerNullablesEnNull); // Busco problemas de integridad referencial if (Cons.TableName != Cons.ReferenceTable) { qGen.Select RefValidas = new qGen.Select(Cons.ReferenceTable); RefValidas.Columns = new qGen.SqlIdentifierCollection() { Cons.ReferenceColumn }; qGen.Update ElimRefInvalidas = new qGen.Update(table.Name); switch (Cons.ReferenceTable) { case "bancos": // Los bancos inexistentes los remplazo por "otro banco" ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, 99); break; case "personas": // Las personas inexistentes las paso a Administrador ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, 1); break; default: // El resto lo pongo en null ElimRefInvalidas.ColumnValues.AddWithValue(Cons.Column, null); break; } ElimRefInvalidas.WhereClause = new qGen.Where(Cons.Column, qGen.ComparisonOperators.NotIn, RefValidas); System.Console.WriteLine(ElimRefInvalidas.ToString()); this.Connection.ExecuteNonQuery(ElimRefInvalidas); } } }
public void CheckTable(Lfx.Types.OperationProgress progreso, Lfx.Data.Table table) { Lfx.Data.TableStructure CurrentTableDef = this.DataBase.GetTableStructure(table.Name, true); progreso.ChangeStatus("Verificando tabla " + table.Name); foreach (Lfx.Data.ConstraintDefinition Cons in CurrentTableDef.Constraints.Values) { // Elimino valores 0 (los pongo en NULL) qGen.Update PonerNullablesEnNull = new qGen.Update(table.Name); PonerNullablesEnNull.Fields.AddWithValue(Cons.Column, null); PonerNullablesEnNull.WhereClause = new qGen.Where(Cons.Column, 0); this.DataBase.Execute(PonerNullablesEnNull); // Busco problemas de integridad referencial if (Cons.TableName != Cons.ReferenceTable) { qGen.Select RefValidas = new qGen.Select(Cons.ReferenceTable); RefValidas.Fields = Cons.ReferenceColumn; qGen.Update ElimRefInvalidas = new qGen.Update(table.Name); switch(Cons.ReferenceTable) { case "bancos": // Los bancos inexistentes los remplazo por "otro banco" ElimRefInvalidas.Fields.AddWithValue(Cons.Column, 99); break; case "personas": // Las personas inexistentes las paso a Administrador ElimRefInvalidas.Fields.AddWithValue(Cons.Column, 1); break; default: // El resto lo pongo en null ElimRefInvalidas.Fields.AddWithValue(Cons.Column, null); break; } ElimRefInvalidas.WhereClause = new qGen.Where(Cons.Column, qGen.ComparisonOperators.NotIn, RefValidas); System.Console.WriteLine(ElimRefInvalidas.ToString()); this.DataBase.Execute(ElimRefInvalidas); } } }