Skip to content

Commit

Permalink
Issue zzzprojects#11: Added support for returning a DBDataReader base…
Browse files Browse the repository at this point in the history
…d on xavierjohn's suggestion
  • Loading branch information
jamesra committed Apr 2, 2016
1 parent 960f9b2 commit 22888dd
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
21 changes: 21 additions & 0 deletions EntityFrameworkExtras.EF5/DatabaseExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,27 @@ public static IEnumerable<T> ExecuteStoredProcedure<T>(this Database database, o
return result;
}

/// <summary>
/// Executes the specified stored procedure against a database
/// and returns a DbDataReader. Used for procedures returning multiple result sets.
/// </summary>
/// <param name="database">The database to execute against.</param>
/// <param name="storedProcedure">The stored procedure to execute.</param>
/// <returns></returns>
public static System.Data.Common.DbDataReader ExecuteReader(this Database database, object storedProcedure)
{
if (storedProcedure == null)
throw new ArgumentNullException("storedProcedure");

var info = StoredProcedureParser.BuildStoredProcedureInfo(storedProcedure);

var cmd = database.Connection.CreateCommand();
cmd.CommandText = info.Sql;
cmd.Parameters.AddRange(info.SqlParameters);

return cmd.ExecuteReader();
}

private static void SetOutputParameterValues(IEnumerable<SqlParameter> sqlParameters, object storedProcedure)
{
foreach (SqlParameter sqlParameter in sqlParameters.Where(p => p.Direction != ParameterDirection.Input))
Expand Down
21 changes: 21 additions & 0 deletions EntityFrameworkExtras.EF6/DatabaseExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,27 @@ public static IEnumerable<T> ExecuteStoredProcedure<T>(this Database database, o
return result;
}

/// <summary>
/// Executes the specified stored procedure against a database
/// and returns a DbDataReader. Used for procedures returning multiple result sets.
/// </summary>
/// <param name="database">The database to execute against.</param>
/// <param name="storedProcedure">The stored procedure to execute.</param>
/// <returns></returns>
public static System.Data.Common.DbDataReader ExecuteReader(this Database database, object storedProcedure)
{
if (storedProcedure == null)
throw new ArgumentNullException("storedProcedure");

var info = StoredProcedureParser.BuildStoredProcedureInfo(storedProcedure);

var cmd = database.Connection.CreateCommand();
cmd.CommandText = info.Sql;
cmd.Parameters.AddRange(info.SqlParameters);

return cmd.ExecuteReader();
}

private static void SetOutputParameterValues(IEnumerable<SqlParameter> sqlParameters, object storedProcedure)
{
foreach (SqlParameter sqlParameter in sqlParameters.Where(p => p.Direction != ParameterDirection.Input))
Expand Down
21 changes: 21 additions & 0 deletions EntityFrameworkExtras/DatabaseExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,27 @@ public static IEnumerable<T> ExecuteStoredProcedure<T>(this Database database, o
return result;
}

/// <summary>
/// Executes the specified stored procedure against a database
/// and returns a DbDataReader. Used for procedures returning multiple result sets.
/// </summary>
/// <param name="database">The database to execute against.</param>
/// <param name="storedProcedure">The stored procedure to execute.</param>
/// <returns></returns>
public static System.Data.Common.DbDataReader ExecuteReader(this Database database, object storedProcedure)
{
if (storedProcedure == null)
throw new ArgumentNullException("storedProcedure");

var info = StoredProcedureParser.BuildStoredProcedureInfo(storedProcedure);

var cmd = database.Connection.CreateCommand();
cmd.CommandText = info.Sql;
cmd.Parameters.AddRange(info.SqlParameters);

return cmd.ExecuteReader();
}

private static void SetOutputParameterValues(IEnumerable<SqlParameter> sqlParameters, object storedProcedure)
{
foreach (SqlParameter sqlParameter in sqlParameters.Where(p => p.Direction != ParameterDirection.Input))
Expand Down

0 comments on commit 22888dd

Please sign in to comment.