55using System . Data . Common ;
66using System . Globalization ;
77using System . Linq ;
8- #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0 || NETCORE3_1
8+ #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0
99using System . Text . Json ;
1010#endif
1111
@@ -17,6 +17,11 @@ namespace EFCoreSecondLevelCacheInterceptor;
1717public class EFTableRowsDataReader : DbDataReader
1818{
1919 private readonly int _rowsCount ;
20+
21+ #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0
22+ private readonly EFCoreSecondLevelCacheSettings _settings ;
23+ #endif
24+
2025 private readonly EFTableRows _tableRows ;
2126 private readonly Dictionary < int , Type > _valueTypes ;
2227 private int _currentRow ;
@@ -26,11 +31,19 @@ public class EFTableRowsDataReader : DbDataReader
2631 /// <summary>
2732 /// Converts an EFTableRows to a DbDataReader.
2833 /// </summary>
29- public EFTableRowsDataReader ( EFTableRows tableRows )
34+ public EFTableRowsDataReader ( EFTableRows tableRows
35+ #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0
36+ ,
37+ EFCoreSecondLevelCacheSettings settings
38+ #endif
39+ )
3040 {
3141 _tableRows = tableRows ;
3242 _rowsCount = _tableRows . RowsCount ;
3343 _valueTypes = new Dictionary < int , Type > ( _tableRows . FieldCount ) ;
44+ #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0
45+ _settings = settings ;
46+ #endif
3447 }
3548
3649 /// <summary>
@@ -547,13 +560,15 @@ public override T GetFieldValue<T>(int ordinal)
547560 return ProcessPostgresArrayOrList < T > ( expectedValueType , enumerable ) ;
548561 }
549562
550- #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0 || NETCORE3_1
563+ #if NET9_0 || NET8_0 || NET7_0 || NET6_0 || NET5_0
551564 var dbTypeName = GetDataTypeName ( ordinal ) ;
552565
553566 if ( actualValueType == TypeExtensions . StringType &&
554567 string . Equals ( dbTypeName , b : "jsonb" , StringComparison . OrdinalIgnoreCase ) )
555568 {
556- return JsonSerializer . Deserialize < T > ( ( string ) value ) ! ;
569+ return _settings . JsonSerializerOptions is null
570+ ? JsonSerializer . Deserialize < T > ( ( string ) value ) !
571+ : JsonSerializer . Deserialize < T > ( ( string ) value , _settings . JsonSerializerOptions ) ! ;
557572 }
558573#endif
559574
0 commit comments