@@ -217,7 +217,7 @@ private static IEnumerable<DbSchemaObject> MapSchemaQueryResult((string Type, st
217217
218218 public override object ? ParameterValueToDb ( object ? value , IDbDataParameter parameter )
219219 {
220- switch ( value )
220+ switch ( value )
221221 {
222222#if NET
223223 case DateOnly dateOnly :
@@ -226,12 +226,15 @@ private static IEnumerable<DbSchemaObject> MapSchemaQueryResult((string Type, st
226226 case TimeOnly to :
227227 return to . ToTimeSpan ( ) ;
228228#endif
229- case float [ ] :
230- ( parameter as OracleParameter ) ? . OracleDbType = OracleDbType . Vector_Float32 ;
229+ case OracleVector vector :
230+ ( parameter as OracleParameter ) ? . OracleDbType = vector . ProviderType ;
231231 return value ;
232- case double [ ] :
232+ case float [ ] floats :
233+ ( parameter as OracleParameter ) ? . OracleDbType = OracleDbType. Vector_Float32 ;
234+ return new OracleVector ( floats ) ;
235+ case double [ ] doubles :
233236 ( parameter as OracleParameter ) ? . OracleDbType = OracleDbType. Vector_Float64 ;
234- return value ;
237+ return new OracleVector ( doubles ) ;
235238 default :
236239 return base . ParameterValueToDb ( value , parameter ) ;
237240 }
@@ -384,11 +387,14 @@ public override DbRuntimeSetting GetDbConnectionRuntimeInformation(IDbConnection
384387
385388 static OracleDbHelper ( )
386389 {
387- ProviderSpecificTypeTransforms . TryAdd ( ( typeof ( ReadOnlyMemory < float > ) , typeof ( float [ ] ) ) ,
388- ( fromExpr ) => Expression . Convert ( Expression . Call ( fromExpr , "ToArray" , null , [ ] ) , typeof ( float [ ] ) )
390+ ProviderSpecificTypeTransforms . TryAdd ( ( typeof ( ReadOnlyMemory < float > ) , typeof ( OracleVector ) ) ,
391+ ( fromExpr ) => Expression . New ( typeof ( OracleVector ) . GetConstructor ( new [ ] { typeof ( float [ ] ) } ) ! , [ Expression . Convert ( Expression . Call ( fromExpr , "ToArray" , null , [ ] ) , typeof ( float [ ] ) ) ] )
392+ ) ;
393+ ProviderSpecificTypeTransforms . TryAdd ( ( typeof ( OracleVector ) , typeof ( ReadOnlyMemory < float > ) ) ,
394+ ( fromExpr ) => Expression . New ( typeof ( ReadOnlyMemory < float > ) . GetConstructor ( new [ ] { typeof ( float [ ] ) } ) ! , [ Expression . Call ( fromExpr , typeof ( OracleVector ) . GetMethod ( nameof ( OracleVector . ToFloatArray ) ) ! , [ ] ) ] )
389395 ) ;
390396 ProviderSpecificTypeTransforms . TryAdd ( ( typeof ( float [ ] ) , typeof ( ReadOnlyMemory < float > ) ) ,
391- ( fromExpr ) => Expression . New ( typeof ( ReadOnlyMemory < float > ) . GetConstructor ( new [ ] { typeof ( float [ ] ) } ) ! , [ fromExpr ] )
397+ ( fromExpr ) => Expression . New ( typeof ( ReadOnlyMemory < float > ) . GetConstructor ( new [ ] { typeof ( float [ ] ) } ) ! , [ fromExpr ] )
392398 ) ;
393399 }
394400}
0 commit comments