ODP v.2.111.7.20 -- ошибки
От: Spaider Верблюд  
Дата: 13.11.09 15:02
Оценка:
Прогнал ODP юнит-тесты на Oracle.DataAcces, Version=2.111.7.20
Собирал BLToolkit из SVN, но около месяца назад.
Есть кучка отвалившихся тестов, в частности, меня задевают вот эти: TestDataSet и подобные.
Валятся с ошибкой:

Mapping.ResultSetTest.TestDataSet:
BLToolkit.Data.DataException : Unable to cast object of type 'Oracle.DataAccess.Client.OracleDataReader' to type 'Oracle.DataAccess.Types.OracleRefCursor'.
  ----> System.InvalidCastException : Unable to cast object of type 'Oracle.DataAccess.Client.OracleDataReader' to type 'Oracle.DataAccess.Types.OracleRefCursor'.


Как мне кажется, причина в ребятах из Орыкла, но все же хотелось бы знать наверняка
И если можно, как эту проблему забороть. Может быть, откатится на более раннюю версию ODP.NET, с которой BLToolkit умеет дружить?
--
К вашим услугам,
Re: ODP v.2.111.7.20 -- ошибки
От: krserg Россия  
Дата: 26.11.09 15:10
Оценка: 4 (1)
Мы путем эксперементов у себя победили эту проблему забив такой "костыль":
класс ODPDataProvider, метод CloneParameter(IDbDataParameter parameter)


           if (((OracleParameter)parameter).OracleDbType == OracleDbType.RefCursor)
            {
                OracleParameter op = new OracleParameter(parameter.ParameterName, OracleDbType.RefCursor);
                op.Direction = parameter.Direction;

                return op;
            }


Отказываться не собираемся, т.к. ODP стало реально быстрее!
... << RSDN@Home 1.2.0 alpha 4 rev. 1231>>
Re[2]: ODP v.2.111.7.20 -- ошибки
От: Spaider Верблюд  
Дата: 26.11.09 15:26
Оценка:
Здравствуйте, krserg, Вы писали:

K>Мы путем эксперементов у себя победили эту проблему забив такой "костыль":

K>класс ODPDataProvider, метод CloneParameter(IDbDataParameter parameter)


K>
K>           if (((OracleParameter)parameter).OracleDbType == OracleDbType.RefCursor)
K>            {
K>                OracleParameter op = new OracleParameter(parameter.ParameterName, OracleDbType.RefCursor);
K>                op.Direction = parameter.Direction;

K>                return op;
K>            }

K>


K>Отказываться не собираемся, т.к. ODP стало реально быстрее!


Спасибо, но пока суть да дело, вернулся к провайдеру от мелкософта.
--
К вашим услугам,
Re: ODP v.2.111.7.20 -- ошибки
От: Блудов Павел Россия  
Дата: 23.12.09 10:37
Оценка: 2 (1)
Здравствуйте, Spaider, Вы писали:

S>Прогнал ODP юнит-тесты на Oracle.DataAcces, Version=2.111.7.20


S>
S>Mapping.ResultSetTest.TestDataSet:
S>BLToolkit.Data.DataException : Unable to cast object of type 'Oracle.DataAccess.Client.OracleDataReader' to type 'Oracle.DataAccess.Types.OracleRefCursor'.
  ---->> System.InvalidCastException : Unable to cast object of type 'Oracle.DataAccess.Client.OracleDataReader' to type 'Oracle.DataAccess.Types.OracleRefCursor'.
S>


S>Как мне кажется, причина в ребятах из Орыкла, но все же хотелось бы знать наверняка


http://forums.oracle.com/forums/thread.jspa?threadID=989830&amp;tstart=0
Правильный ответ — откатиться обратно на 11.1.0.6

От себя добавлю, что ошибка только в x86 версии, сборка для X64 работает нормально.
Re[2]: ODP v.2.111.7.20 -- ошибки
От: Igon Украина  
Дата: 19.07.10 10:05
Оценка:
Здравствуйте, krserg, Вы писали:

K>Мы путем эксперементов у себя победили эту проблему забив такой "костыль":

K>класс ODPDataProvider, метод CloneParameter(IDbDataParameter parameter)


Костыль действительно решает ошибку каста. Но вместо нее появляется другая. А именно:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

at Oracle.DataAccess.Client.OpsDac.Read(IntPtr opsConCtx, IntPtr opsErrCtx, IntPtr opsSqlCtx, IntPtr& opsDacCtx, OpoSqlValCtx* pOpoSqlValCtx, OpoMetValCtx* pOpoMetValCtx, OpoDacValCtx* pOpoDacValCtx)
at Oracle.DataAccess.Client.OracleDataReader.Read()
at BLToolkit.Mapping.DataReaderListMapper.SetNextDataSource(InitContext initContext) in C:\Projects\spt_tst\bltoolkit\Mapping\DataReaderListMapper.cs:line 22
at BLToolkit.Mapping.MappingSchema.MapSourceListToDestinationList(IMapDataSourceList dataSourceList, IMapDataDestinationList dataDestinationList, Object[] parameters) in C:\Projects\spt_tst\bltoolkit\Mapping\MappingSchema.cs:line 1790
at BLToolkit.Mapping.MappingSchema.MapDataReaderToList(IDataReader reader, IList list, Type destObjectType, Object[] parameters) in C:\Projects\spt_tst\bltoolkit\Mapping\MappingSchema.cs:line 3079
at BLToolkit.Mapping.MappingSchema.MapDataReaderToResultSet(IDataReader reader, MapResultSet[] resultSets) in C:\Projects\spt_tst\bltoolkit\Mapping\MappingSchema.cs:line 3745
at BLToolkit.Data.DbManager.ExecuteResultSet(MapResultSet[] resultSets) in C:\Projects\spt_tst\bltoolkit\Data\DbManager.cs:line 4053
at spt.DataAccessLayer.MessageAccessor.GetMessageForView(DbManager db, Int64 msgID, Int64 userID, Int32 msgCnt, List`1& listFileInfo, List`1& listLot, SpecializedOrganization& specializedOrganization, List`1& listActionsHistory) in C:\Projects\spt_tst\spt.DataAccessLayer\MessageAccessor.cs:line 499
at spt.DataAccessLayer.MessageDAL.GetMessageForView(DbManager db, Int64 msgID, Int64 userID, Int32 msgCnt, List`1& listFileInfo, List`1& listLot, SpecializedOrganization& specializedOrganization, List`1& listActionsHistory) in C:\Projects\spt_tst\spt.DataAccessLayer\MessageDAL.cs:line 515
at spt.DataAccessLayer.MessageDAL.GetMessageForView(Int64 msgID, Int64 userID, Int32 msgCnt, List`1& listFileInfo, List`1& listLot, SpecializedOrganization& specializedOrganization, List`1& listActionsHistory) in C:\Projects\spt_tst\spt.DataAccessLayer\MessageDAL.cs:line 560
at Anonym.BargainingViewer.FillAndValidateData() in c:\Projects\spt_tst\spt\anonym\bargainingviewer.aspx.cs:line 143
at Anonym.BargainingViewer.Page_PreRender(Object sender, EventArgs e) in c:\Projects\spt_tst\spt\anonym\bargainingviewer.aspx.cs:line 69
Re[2]: ODP v.2.111.7.20 -- ошибки
От: Igon Украина  
Дата: 19.07.10 20:24
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Правильный ответ — откатиться обратно на 11.1.0.6


БП>От себя добавлю, что ошибка только в x86 версии, сборка для X64 работает нормально.


А что делать если продакшн Windows server 2008 R2, на него устанавливается только
Oracle Data Provider for .NET 2.0 11.1.0.7.20, в котором как раз все эти проблемы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.