private string GetCommand(SqlConnection connection) { string comm = GetSetIdentityCmd(on: true) + "MERGE INTO " + BulkOperationsHelper.GetFullQualifyingTableName(connection.Database, _schema, _tableName) + $" WITH ({_tableHint}) AS Target " + "USING " + Constants.TempTableName + " AS Source " + BulkOperationsHelper.BuildJoinConditionsForInsertOrUpdate(_matchTargetOn.ToArray(), Constants.SourceAlias, Constants.TargetAlias, base._collationColumnDic, _nullableColumnDic) + GetMatchedTargetCmd() + "WHEN NOT MATCHED BY TARGET THEN " + BulkOperationsHelper.BuildMergeInsert(_columns, Constants.SourceAlias, _identityColumn, _bulkCopySettings) + (_deleteWhenNotMatchedFlag ? " WHEN NOT MATCHED BY SOURCE " + BulkOperationsHelper.BuildPredicateQuery(_matchTargetOn.ToArray(), _deletePredicates, Constants.TargetAlias, base._collationColumnDic) + "THEN DELETE " : " ") + BulkOperationsHelper.GetOutputIdentityCmd(_identityColumn, _outputIdentity, Constants.TempOutputTableName, OperationType.InsertOrUpdate) + "; " + GetSetIdentityCmd(on: false) + "DROP TABLE " + Constants.TempTableName + ";"; return(comm); }