예제 #1
0
        public static string[] AddArrayParameter <T, TDynamicParameters>(this IDatabaseParameterHelper databaseParameterHelper, TDynamicParameters parameters, string paramName, IEnumerable <T> enumerable)
        {
            var array = databaseParameterHelper.ToParameterArrayValue(enumerable);

            if (databaseParameterHelper.DatabaseType != SupportedDatabaseTypes.Oracle)
            {
                var parameterNames = new List <string>();
                for (var i = 0; i < array.Length; i++)
                {
                    var parameterName = $"{paramName}{i}";
                    parameterNames.Add($"{databaseParameterHelper.GetParameterPrefix()}{parameterName}");
                    parameters.Add(parameterName, array.GetValue(i));
                }

                return(parameterNames.ToArray());
            }
            parameters.Add(paramName, array);

            return(new [] { $"{databaseParameterHelper.GetParameterPrefix()}{paramName}" });
        }
        public void AddArrayParameter <T>(string paramName, IEnumerable <T> enumerable, ref string sql)
        {
            var array = DataParameterHelperField.ToParameterArrayValue(enumerable);

            if (DataParameterHelperField.DatabaseType == SupportedDatabaseTypes.Postgres)
            {
                var parameterNames = new List <string>();
                for (var i = 0; i < array.Length; i++)
                {
                    var parameterName = $"{paramName}{i}";
                    parameterNames.Add(parameterName);

                    Add(parameterName, array.GetValue(i));
                }

                sql = sql.Replace(DataParameterHelperField.WithParameters(paramName), $"({string.Join(",", DataParameterHelperField.WithParameters(parameterNames.ToArray()))})");
            }
            else
            {
                DynamicParameters.Add(paramName, array);
            }
        }