Beispiel #1
0
        /// <summary>
        /// Builds the insert sql.
        /// </summary>
        /// <param name="insertSql">The insert sql.</param>
        /// <returns>An ISqlResult.</returns>
        protected virtual ISqlResult BuildInsertSql(InsertSql insertSql)
        {
            var result    = new ParmsSqlResult();
            var doc       = EntityUtil.AsTableRecord(insertSql.Table);
            var tableName = TableUtlis.GetTableName(insertSql.Table.GetType());
            var sql       = $"insert into {_dbProvider.FormatFieldName(tableName)}";
            var pams      = new List <IDbDataParameter>();
            var fields    = new List <string>();
            var valueList = new List <string>();

            foreach (var item in doc.Keys.ToList())
            {
                if (_dbOption.IsUseParamers)
                {
                    var param = _dbProvider.GetDbDataParameter();
                    param.ParameterName = Guid.NewGuid().ToString();
                    param.Value         = doc[item];
                    if (param.Value != null)
                    {
                        fields.Add($"{_dbProvider.FormatFieldName(item)}");
                        pams.Add(param);
                    }
                }
                else
                {
                    var t_value = _dbProvider.GetObjectType(doc[item]);
                    if (t_value != null)
                    {
                        valueList.Add(t_value);
                        fields.Add($"{_dbProvider.FormatFieldName(item)}");
                    }
                }
            }
            if (_dbOption.IsUseParamers)
            {
                sql = $"{sql}({fields.Join(",")}) values({pams.Join(",", t => t.ParameterName)})";
            }
            else
            {
                sql = $"{sql}({fields.Join(",")}) values({valueList.Join(",")})";
            }
            result.SQL = sql;
            result.Parameters.AddRange(pams);
            return(result);
        }