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