public (string, IEnumerable <object>) TranslateQuery(MergeStatement <TEntity> mergeQuery) { var queryBuilder = new SqlQueryBuilder(); // Merge Statement AppendOperation(queryBuilder, "MERGE INTO", tableAlias: TARGET_TABLE_ALIAS); // Using Statement AppendOperation(queryBuilder, " USING", mergeQuery.TemporaryTableName, SOURCE_TABLE_ALIAS); queryBuilder.Append(" ON "); AppendMergeJoinKeys(queryBuilder, mergeQuery.Keys); // Update Into if (mergeQuery.Type == MergeStatement <TEntity> .MergeType.UpdateOnly || mergeQuery.Type == MergeStatement <TEntity> .MergeType.InsertOrUpdate) { AppendMergeStatement(queryBuilder); } // Insert Statement if (mergeQuery.Type == MergeStatement <TEntity> .MergeType.InsertOnly || mergeQuery.Type == MergeStatement <TEntity> .MergeType.InsertOrUpdate) { AppendInsertMergeStatement(queryBuilder); } queryBuilder.Append(";"); return(queryBuilder.Build()); }
public (string, IEnumerable <object>) TranslateQuery(DeleteStatement <TEntity> query) { var queryBuilder = new SqlQueryBuilder(); AppendOperation(queryBuilder, "DELETE"); AppendPredicate(queryBuilder, query.Predicate); return(queryBuilder.Build()); }
public (string, IEnumerable <object>) TranslateQuery(UpdateStatement <TEntity> query) { var queryBuilder = new SqlQueryBuilder(); AppendOperation(queryBuilder, "UPDATE"); AppendUpdateStatements(queryBuilder, query.Assignments); AppendPredicate(queryBuilder, query.Predicate); return(queryBuilder.Build()); }