Показать сообщение отдельно
Старый 13.07.2018, 19:59   #1  
kitty is offline
kitty
Участник
 
354 / 26 (1) +++
Регистрация: 24.05.2005
Передать binary поле
Нужно перекачать varbinary поле, содержащее картинку, из внешней таблицы в аксаптовскую табличку (AX2012R3)
Помогите, пожалуйста, правилько перобразовать типы.
Пишу:

X++:
    System.Data.SqlClient.SqlConnection      sqlConnection;
    System.Data.SqlClient.SqlDataReader     dataReader;
    System.Data.SqlClient.SqlCommand        command;
    str                                                               comandText;
    SqlStatementExecutePermission              permission;
    container                                                    image;
    String                                                         conStr = <myConnectionString>;

        permission.assert();
        sqlConnection = new System.Data.SqlClient.SqlConnection();
        sqlConnection.set_ConnectionString(conStr);
        command = sqlConnection.CreateCommand();
        comandText = strFmt(@"<my select statement>");
        command.set_CommandText(comandText);
        sqlConnection.Open();
        dataReader = command.ExecuteReader();
        
        if (dataReader.Read())
        {           
            image        = dataReader.GetValue(1);
.....
Все компилируется, но CIL вываливается с ошибкой:
"CIL generation: Error: .NET Cast Type Name not found. Type System.String found on the stack. This code in Class/Table: <MyClassName>, Method: <My methodName> may not work in CIL run time."

Пытаюсь изменить на:
X++:
 image        = dataReader.GetSqlBinary(1);
Но ошибка та же ...

Я понимаю, что можно через base64 , но хотелось бы именно binary данные перелить, т.е без лишних конвертаций.

Спасибо