diff --git a/AmalgamationTool/DynamORM.Amalgamation.cs b/AmalgamationTool/DynamORM.Amalgamation.cs
index b4d33f3..f8b1432 100644
--- a/AmalgamationTool/DynamORM.Amalgamation.cs
+++ b/AmalgamationTool/DynamORM.Amalgamation.cs
@@ -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
/// 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.
/// The namespace for the XML representation of the data stored in the DataTable.
///
- 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);
diff --git a/DynamORM/DynamicProcedureInvoker.cs b/DynamORM/DynamicProcedureInvoker.cs
index 379f8f7..bd0846e 100644
--- a/DynamORM/DynamicProcedureInvoker.cs
+++ b/DynamORM/DynamicProcedureInvoker.cs
@@ -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();
diff --git a/DynamORM/Helpers/DataReaderExtensions.cs b/DynamORM/Helpers/DataReaderExtensions.cs
index dd8bd95..c5ca65d 100644
--- a/DynamORM/Helpers/DataReaderExtensions.cs
+++ b/DynamORM/Helpers/DataReaderExtensions.cs
@@ -11,7 +11,7 @@ namespace DynamORM.Helpers
/// 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.
/// The namespace for the XML representation of the data stored in the DataTable.
///
- 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);
diff --git a/Tester/Program.cs b/Tester/Program.cs
index 2e703eb..f088ff5 100644
--- a/Tester/Program.cs
+++ b/Tester/Program.cs
@@ -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();
+ var dt = rdr.ToDataTable();
+ var dt2 = db.Procedures.sp_getdate();
+
db.Procedures.usp_API_Generate_Doc_Number(key: Guid.NewGuid(), mdn_id: "ZZ");
var resL = (db.Procedures.GetProductDesc>() as IEnumerable)