Exemple #1
0
        public string ToSQL()
        {
            if (this.models.Count == 0)
            {
                throw new ArgumentOutOfRangeException("No items.");
            }

            Parameters.Clear();

            string        tableName  = MyStagingUtils.GetMapping(typeof(T), ProviderType.MySql);
            StringBuilder sqlBuilder = new StringBuilder();

            sqlBuilder.Append($"INSERT INTO {tableName}");

            string fieldsName = string.Empty;
            var    properties = MyStagingUtils.GetDbFields(typeof(T));

            foreach (var p in properties)
            {
                fieldsName += $"`{p.Name}`,";
            }

            fieldsName = fieldsName.Remove(fieldsName.Length - 1, 1);
            sqlBuilder.Append($"({fieldsName}) VALUES ");

            for (int i = 0; i < models.Count; i++)
            {
                string valueString = string.Empty;
                foreach (var pi in properties)
                {
                    var paramName = $"@{pi.Name}_{i}";
                    var value     = pi.GetValue(models[i]);
                    var pk        = pi.GetCustomAttribute <PrimaryKeyAttribute>();
                    var hasPK     = pk != null;
                    if (hasPK && pk.AutoIncrement)
                    {
                        valueString += "default,";
                    }
                    else
                    {
                        valueString += paramName + ",";
                        if (hasPK || defaultValueField.ContainsKey(pi.Name.ToLower()))
                        {
                            if (value == null || value.Equals(Guid.Empty) || zeroTime.Equals(value))
                            {
                                value = GetDefaultValue(pi);
                            }
                        }
                        Parameters.Add(new MySqlParameter(paramName, value));
                    }
                }
                valueString = valueString.Remove(valueString.Length - 1, 1);
                sqlBuilder.Append($"({valueString}),");
            }

            sqlBuilder.Remove(sqlBuilder.Length - 1, 1);
            sqlBuilder.Append(";");
            CommandText = sqlBuilder.ToString();
            return(CommandText);
        }
Exemple #2
0
        /// <summary>
        ///  重写方法
        /// </summary>
        /// <returns></returns>
        public override string ToSQL()
        {
            string tableName = MyStagingUtils.GetMapping(typeof(T), ProviderType.PostgreSQL);

            this.CommandText = $"UPDATE {tableName} a SET {string.Join(",", this.setList)} {"WHERE " + string.Join("\nAND ", WhereConditions)}";

            return(this.CommandText);
        }
Exemple #3
0
        /// <summary>
        ///  重写方法
        /// </summary>
        /// <returns></returns>
        public override string ToSQL()
        {
            string tableName = MyStagingUtils.GetMapping(typeof(T), ProviderType.MySql);

            this.CommandText = $"DELETE FROM {tableName} {"WHERE " + string.Join("\nAND ", WhereConditions)};";

            return(this.CommandText);
        }
Exemple #4
0
        public void GetMapping()
        {
            var mysqlName = "`mystaging`.`user`";
            var mysql     = MyStagingUtils.GetMapping(typeof(UserModel), Metadata.ProviderType.MySql);

            Assert.Equal(mysqlName, mysql);

            var pgsqlName = "\"mystaging\".\"user\"";
            var pgsql     = MyStagingUtils.GetMapping(typeof(UserModel), Metadata.ProviderType.PostgreSQL);

            Assert.Equal(pgsqlName, pgsql);
        }