Параметр связывания массива с использованием DbCommand - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь связать массив для вставки данных в таблицу в массовой операции, используя DbCommand.

Я могу сделать это, используя OracleCommand (и, следовательно, также используя OracleConnection) используя:

    var referenceValues = validRecords.Select(x => x.Reference).ToArray<string>();
    var fundDescriptionValues = validRecords.Select(x => x.FundDescription).ToArray<string>();
    var fundCodeValues = validRecords.Select(x => x.FundCode).ToArray<string>();

    OracleConnection con = new OracleConnection(oracleConnectionString);
    con.Open();

    OracleParameter referenceParam = new OracleParameter
    {
        OracleDbType = OracleDbType.Varchar2,
        Value = referenceValues
    };

    OracleParameter fundDescriptionParam = new OracleParameter
    {
        OracleDbType = OracleDbType.Varchar2,
        Value = fundDescriptionValues
    };

    OracleParameter fundCodeParam = new OracleParameter
    {
        OracleDbType = OracleDbType.Varchar2,
        Value = fundCodeValues
    };

    OracleCommand cmd = con.CreateCommand();

    cmd.CommandText = @"
                INSERT INTO FUND_IMPORT
                (
                    REFERENCE,
                    FUND_DESCRIPTION,
                    FUND_CODE
                )
                VALUES
                (
                    :1,
                    :2,
                    :3
                )";

    cmd.ArrayBindCount = referenceValues.Length;

    cmd.Parameters.Add(referenceParam);
    cmd.Parameters.Add(fundDescriptionParam);
    cmd.Parameters.Add(fundCodeParam);

    cmd.ExecuteNonQuery();

    con.Close();

Есть ли способ выполнить этот тип операции, используя DbCommand (и, следовательно, также используя DbConnection)?

Мы мигрируем на SQL Сервер вместо Oracle, но я бы предпочел использовать библиотеку Generi c вместо SQLCommand.

...