@@ -21,70 +21,70 @@ public static T CreateInstance<T>()
2121 public static Task < T > ConvertToAsync < T > ( this IDataReader dataReader , IOrmLiteDialectProvider dialectProvider , CancellationToken token )
2222 {
2323 var fieldDefs = ModelDefinition < T > . Definition . AllFieldDefinitionsArray ;
24- using ( dataReader )
24+ return dialectProvider . ReaderRead ( dataReader , ( ) =>
2525 {
26- return dialectProvider . ReaderRead ( dataReader , ( ) =>
27- {
28- var row = CreateInstance < T > ( ) ;
29- var indexCache = dataReader . GetIndexFieldsCache ( ModelDefinition < T > . Definition ) ;
30- row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
31- return row ;
32- } , token ) ;
33- }
26+ var row = CreateInstance < T > ( ) ;
27+ var indexCache = dataReader . GetIndexFieldsCache ( ModelDefinition < T > . Definition ) ;
28+ row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
29+ return row ;
30+ } , token ) . Then ( t => {
31+ dataReader . Dispose ( ) ;
32+ return t ;
33+ } ) ;
3434 }
3535
3636 public static Task < List < T > > ConvertToListAsync < T > ( this IDataReader dataReader , IOrmLiteDialectProvider dialectProvider , CancellationToken token )
3737 {
3838 var fieldDefs = ModelDefinition < T > . Definition . AllFieldDefinitionsArray ;
39- using ( dataReader )
39+ var indexCache = dataReader . GetIndexFieldsCache ( ModelDefinition < T > . Definition ) ;
40+ return dialectProvider . ReaderEach ( dataReader , ( ) =>
4041 {
41- var indexCache = dataReader . GetIndexFieldsCache ( ModelDefinition < T > . Definition ) ;
42- return dialectProvider . ReaderEach ( dataReader , ( ) =>
43- {
44- var row = CreateInstance < T > ( ) ;
45- row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
46- return row ;
47- } , token ) ;
48- }
42+ var row = CreateInstance < T > ( ) ;
43+ row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
44+ return row ;
45+ } , token ) . Then ( t => {
46+ dataReader . Dispose ( ) ;
47+ return t ;
48+ } ) ;
4949 }
5050
5151 public static Task < object > ConvertToAsync ( this IDataReader dataReader , IOrmLiteDialectProvider dialectProvider , Type type , CancellationToken token )
5252 {
5353 var modelDef = type . GetModelDefinition ( ) ;
5454 var fieldDefs = modelDef . AllFieldDefinitionsArray ;
5555
56- using ( dataReader )
56+ return dialectProvider . ReaderRead ( dataReader , ( ) =>
57+ {
58+ var row = type . CreateInstance ( ) ;
59+ var indexCache = dataReader . GetIndexFieldsCache ( modelDef ) ;
60+ row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
61+ return row ;
62+ } , token ) . Then ( t =>
5763 {
58- return dialectProvider . ReaderRead ( dataReader , ( ) =>
59- {
60- var row = type . CreateInstance ( ) ;
61- var indexCache = dataReader . GetIndexFieldsCache ( modelDef ) ;
62- row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
63- return row ;
64- } , token ) ;
65- }
64+ dataReader . Dispose ( ) ;
65+ return t ;
66+ } ) ;
6667 }
6768
6869 public static Task < IList > ConvertToListAsync ( this IDataReader dataReader , IOrmLiteDialectProvider dialectProvider , Type type , CancellationToken token )
6970 {
7071 var modelDef = type . GetModelDefinition ( ) ;
7172 var fieldDefs = modelDef . AllFieldDefinitionsArray ;
7273
73- using ( dataReader )
74+ var indexCache = dataReader . GetIndexFieldsCache ( modelDef ) ;
75+ return dialectProvider . ReaderEach ( dataReader , ( ) =>
7476 {
75- var indexCache = dataReader . GetIndexFieldsCache ( modelDef ) ;
76- return dialectProvider . ReaderEach ( dataReader , ( ) =>
77- {
78- var row = type . CreateInstance ( ) ;
79- row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
80- return row ;
81- } , token )
82- . Then ( x => {
83- var to = ( IList ) typeof ( List < > ) . MakeGenericType ( type ) . CreateInstance ( ) ;
84- x . Each ( o => to . Add ( o ) ) ;
85- return to ;
86- } ) ;
87- }
77+ var row = type . CreateInstance ( ) ;
78+ row . PopulateWithSqlReader ( dialectProvider , dataReader , fieldDefs , indexCache ) ;
79+ return row ;
80+ } , token )
81+ . Then ( x =>
82+ {
83+ dataReader . Dispose ( ) ;
84+ var to = ( IList ) typeof ( List < > ) . MakeGenericType ( type ) . CreateInstance ( ) ;
85+ x . Each ( o => to . Add ( o ) ) ;
86+ return to ;
87+ } ) ;
8888 }
8989 }
9090}
0 commit comments