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);
        }