public void AddAllTableJoinRows(List <RawTableJoinRow> joinRowList, string name, SqlQualifiedJoinTableExpression joinExpression) { var newTableRows = new List <RawTableJoinRow>( ); var filter = HelperConditional.GetRowFilter(joinExpression.OnClause.Expression, this); foreach (var currentRawRows in RawRowList) { var currentRowCount = newTableRows.Count; foreach (var row in joinRowList) { var newRows = new RawTableJoinRow(currentRawRows) { row.First() }; if (filter.IsValid(newRows)) { newTableRows.Add(newRows); } } if (currentRowCount == newTableRows.Count && joinExpression.JoinOperator == SqlJoinOperatorType.LeftOuterJoin) { newTableRows.Add(currentRawRows); } } RawRowList = newTableRows; }
public void ExecuteWhereClause(SqlWhereClause whereClause) { foreach (var child in whereClause.Children) { var filter = HelperConditional.GetRowFilter(( SqlBooleanExpression )child, this); RawRowList = RawRowList.Where(r => filter.IsValid(r)).ToList( ); } }
private void ValidateAllForeignKeyConstraints(ArrayList row, Table table) { foreach (var constraint in table.ForeignKeyConstraints.Where(k => k.CheckThrowsException)) { for (int index = 0; index < constraint.Columns.Count; index++) { var column = table.Columns.Single(c => c.Name == constraint.Columns[index]); var foreignKey = row[column.Order]; if (foreignKey != null && foreignKey is DBNull == false) { var referencedTable = ((MemoryDbConnection )_Command.Connection).GetMemoryDatabase( ).Tables[constraint.ReferencedTableName]; var referencedColumn = referencedTable.Columns.Single(c => c.Name == constraint.ReferencedColumns[index]); if (referencedTable.Rows.Any(r => HelperConditional.IsPredicateCorrect(foreignKey, r[referencedColumn.Order], SqlComparisonBooleanExpressionType.Equals)) == false) { throw new SqlInsertInvalidForeignKeyException(constraint.Name, referencedTable.FullName, referencedColumn.Name); } } } } }