コード例 #1
0
ファイル: SqlBuilder.cs プロジェクト: MingLu8/Nemo
        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);
        }