.NET Core + Dapper + OracleManagedDataAccess.core + столбцы с пробелами - PullRequest
0 голосов
/ 05 июля 2019

В настоящее время существует Spring Boot Service, который проходит через извлечение данных из Oracle, возвращая JSON для внешнего интерфейса React. Это кажется немного медленным, поэтому я создал ядро ​​.NET, подключающееся к той же базе данных Oracle, вызывая ту же хранимую процедуру, и это быстрее. Проблема, с которой я сталкиваюсь: с помощью Dapper я передаю имя класса для загрузки класса, а хранимая процедура Oracle возвращает столбцы с пробелами в середине.

Например, столбец может называться «Домашний телефон».

Я не могу изменить процедуру, как решить эту проблему с помощью Dapper или это возможно?

public MyClassName GetDataFromOracle(MyParameterClass myParams)
{
    MyClassName myClassName = new MyClassName();

    using (OracleConnection con = new OracleConnection(conString))
    {
        using (OracleCommand cmd = con.CreateCommand())
        {
            try
            {
                con.Open();

                string procedureName = "PRODUCT_PROCNAME_SP";
                var dyParam = new OracleDynamicParameters();
                DateTime dtStart = Convert.ToDateTime(myParams.startDate);
                DateTime dtEnd = Convert.ToDateTime(myParams.endDate);
                dyParam.Add("p_START_DATE", dtStart, OracleDbType.Date, ParameterDirection.Input);
                dyParam.Add("p_END_DATE", dtEnd, OracleDbType.Date, ParameterDirection.Input);
                dyParam.Add("OUT_DATA", null, OracleDbType.RefCursor, ParameterDirection.Output);

                var result = SqlMapper.Query<MyClassName>(con, procedureName, param: dyParam, commandType: CommandType.StoredProcedure);

                foreach (var row in result)
                {
                    InternalClass br = (InternalClass)Convert.ChangeType(row, typeof(InternalClass));
                    myClassName.ICArray.Add(br);
                }
            }
            catch (OracleException ex)
            {
                //log it
            }
        }
    }

    return myClassName;
}
...