Made previous change working correctly

This commit is contained in:
grzegorz.russek
2023-02-22 13:42:54 +00:00
parent 9e0f315b24
commit 20287a6b8b
4 changed files with 20 additions and 4 deletions

View File

@@ -5581,6 +5581,11 @@ namespace DynamORM
using (IDataReader rdr = cmd.ExecuteReader())
mainResult = rdr.CachedReader();
}
else if (types[0] == typeof(DataTable))
{
using (IDataReader rdr = cmd.ExecuteReader())
mainResult = rdr.CachedReader().ToDataTable(binder.Name);
}
else if (types[0].IsGenericEnumerable())
{
Type argType = types[0].GetGenericArguments().First();
@@ -10990,7 +10995,7 @@ namespace DynamORM
/// <param name="name">The name to give the table. If tableName is null or an empty string, a default name is given when added to the System.Data.DataTableCollection.</param>
/// <param name="nameSpace">The namespace for the XML representation of the data stored in the DataTable.</param>
/// <returns></returns>
public static DataTable GetDataTableFromDataReader(this IDataReader r, string name = null, string nameSpace = null)
public static DataTable ToDataTable(this IDataReader r, string name = null, string nameSpace = null)
{
DataTable schemaTable = r.GetSchemaTable();
DataTable resultTable = new DataTable(name, nameSpace);
@@ -11011,7 +11016,7 @@ namespace DynamORM
while (r.Read())
{
DataRow row = resultTable.NewRow();
for (int i = 0; i < resultTable.Columns.Count - 1; i++)
for (int i = 0; i < resultTable.Columns.Count; i++)
row[i] = r[i];
resultTable.Rows.Add(row);

View File

@@ -192,6 +192,11 @@ namespace DynamORM
using (IDataReader rdr = cmd.ExecuteReader())
mainResult = rdr.CachedReader();
}
else if (types[0] == typeof(DataTable))
{
using (IDataReader rdr = cmd.ExecuteReader())
mainResult = rdr.CachedReader().ToDataTable(binder.Name);
}
else if (types[0].IsGenericEnumerable())
{
Type argType = types[0].GetGenericArguments().First();

View File

@@ -11,7 +11,7 @@ namespace DynamORM.Helpers
/// <param name="name">The name to give the table. If tableName is null or an empty string, a default name is given when added to the System.Data.DataTableCollection.</param>
/// <param name="nameSpace">The namespace for the XML representation of the data stored in the DataTable.</param>
/// <returns></returns>
public static DataTable GetDataTableFromDataReader(this IDataReader r, string name = null, string nameSpace = null)
public static DataTable ToDataTable(this IDataReader r, string name = null, string nameSpace = null)
{
DataTable schemaTable = r.GetSchemaTable();
DataTable resultTable = new DataTable(name, nameSpace);
@@ -32,7 +32,7 @@ namespace DynamORM.Helpers
while (r.Read())
{
DataRow row = resultTable.NewRow();
for (int i = 0; i < resultTable.Columns.Count - 1; i++)
for (int i = 0; i < resultTable.Columns.Count; i++)
row[i] = r[i];
resultTable.Rows.Add(row);

View File

@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using DynamORM;
using DynamORM.Helpers;
namespace Tester
{
@@ -48,6 +50,10 @@ namespace Tester
//db.Execute("DROP TABLE Experiments ");
IDataReader rdr = db.Procedures.sp_getdate<IDataReader>();
var dt = rdr.ToDataTable();
var dt2 = db.Procedures.sp_getdate<DataTable>();
db.Procedures.usp_API_Generate_Doc_Number<string>(key: Guid.NewGuid(), mdn_id: "ZZ");
var resL = (db.Procedures.GetProductDesc<IList<GetProductDesc_Result>>() as IEnumerable<dynamic>)