コード例 #1
0
        public string BuildSqlForCreate(T poco, params object[] keyValues)
        {
            if (keyValues.Length != _headKeyColumns.Length)
            {
                throw new ArgumentException("Head key value required");
            }

            var sb        = new StringBuilder();
            var concating = false;
            var keyIndex  = 0;

            foreach (var column in _allColumns)
            {
                if (column.IsIdentity)
                {
                    continue;
                }

                if (concating == false)
                {
                    concating = true;
                }
                else
                {
                    sb.Append(",");
                }

                if (column.PropertyInfo == null)
                {
                    sb.Append(column.ConvertToSqlValue(keyValues[keyIndex]));
                    keyIndex += 1;
                }
                else
                {
                    sb.Append(column.ExtractToSqlValue(poco));
                }
            }

            return(_sqlProvider.BuildInsertIntoSql(_tableName,
                                                   _allColumnStringExceptIdentity,
                                                   sb.ToString(),
                                                   _identityColumn));
        }