internal static string GetInsertStatement(Type objectType, Param[] parameters, DialectProvider dialect) { var tableName = GetTableNameForSql(objectType, dialect); var columns = parameters.Where(p => !p.IsAutoGenerated).Select(p => dialect.IdentifierEscapeStartCharacter + p.Source + dialect.IdentifierEscapeEndCharacter).ToDelimitedString(","); var paramNames = parameters.Where(p => !p.IsAutoGenerated).Select(p => dialect.UseOrderedParameters ? "?" : dialect.ParameterPrefix + p.Name).ToDelimitedString(","); var sql = string.Format(SqlInsertFormat, tableName, columns, paramNames); var primaryKey = parameters.FirstOrDefault(p => p.IsAutoGenerated && p.IsPrimaryKey); if (primaryKey != null) { sql += ";" + dialect.ComputeAutoIncrement(primaryKey.Name, () => tableName); } return(sql); }