예제 #1
0
        public virtual string BuildDeleteByIdScript(TableMold table, string idParameterName)
        {
            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }

            if (idParameterName == null)
            {
                throw new ArgumentNullException(nameof(idParameterName));
            }

            var sb = new StringBuilder();

            var decoratedTableName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Table,
                table.Name,
                this.CurrentOpeningIdentifierDelimiter);

            var decoratedIdColumnName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Column,
                table.GetPrimaryKeyColumn().Name,
                this.CurrentOpeningIdentifierDelimiter);

            sb.Append($"DELETE FROM {decoratedTableName} WHERE {decoratedIdColumnName} = @{idParameterName}");
            var sql = sb.ToString();

            return(sql);
        }
예제 #2
0
        public virtual string BuildSelectByIdScript(TableMold table, string idParameterName)
        {
            var sb = new StringBuilder();

            var decoratedTableName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Table,
                table.Name,
                this.CurrentOpeningIdentifierDelimiter);

            sb.AppendLine($"SELECT");
            for (var i = 0; i < table.Columns.Count; i++)
            {
                var column = table.Columns[i];
                var decoratedColumnName = this.Dialect.DecorateIdentifier(
                    DbIdentifierType.Column,
                    column.Name,
                    this.CurrentOpeningIdentifierDelimiter);

                sb.Append($"    {decoratedColumnName}");
                if (i < table.Columns.Count - 1)
                {
                    sb.AppendLine(",");
                }
            }

            sb.AppendLine();
            sb.AppendLine($"FROM {decoratedTableName}");
            sb.AppendLine("WHERE");
            var decoratedIdColumnName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Column,
                table.GetPrimaryKeyColumn().Name,
                this.CurrentOpeningIdentifierDelimiter);

            sb.Append($"    {decoratedIdColumnName} = @{idParameterName}");

            var sql = sb.ToString();

            return(sql);
        }
예제 #3
0
        public virtual string BuildUpdateScript(
            TableMold table,
            IReadOnlyDictionary <string, string> columnToParameterMappings)
        {
            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }

            if (columnToParameterMappings == null)
            {
                throw new ArgumentNullException(nameof(columnToParameterMappings));
            }

            if (columnToParameterMappings.Count == 0)
            {
                throw new ArgumentException($"'{nameof(columnToParameterMappings)}' must not be empty.");
            }

            var sb = new StringBuilder();
            var decoratedTableName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Table,
                table.Name,
                this.CurrentOpeningIdentifierDelimiter);

            sb.AppendLine($"UPDATE {decoratedTableName} SET");

            var idColumnName          = table.GetPrimaryKeyColumn().Name.ToLowerInvariant();
            var decoratedIdColumnName = this.Dialect.DecorateIdentifier(
                DbIdentifierType.Column,
                idColumnName,
                this.CurrentOpeningIdentifierDelimiter);
            var idParameterName = columnToParameterMappings[idColumnName];

            var columnNamesToUpdate = columnToParameterMappings.Keys.Except(new[] { idColumnName }).ToList();

            for (var i = 0; i < columnNamesToUpdate.Count; i++)
            {
                var columnName = columnNamesToUpdate[i];

                var decoratedColumnName = this.Dialect.DecorateIdentifier(
                    DbIdentifierType.Column,
                    columnName,
                    this.CurrentOpeningIdentifierDelimiter);

                var parameterName = columnToParameterMappings[columnName];

                sb.Append($"    {decoratedColumnName} = @{parameterName}");

                if (i < columnNamesToUpdate.Count - 1)
                {
                    sb.AppendLine(",");
                }
            }

            sb.AppendLine();

            sb.Append($"WHERE {decoratedIdColumnName} = @{idParameterName}");
            var sql = sb.ToString();

            return(sql);
        }