diff --git a/AmalgamationTool/DynamORM.Amalgamation.cs b/AmalgamationTool/DynamORM.Amalgamation.cs
index dccfcbe..e3d0fe6 100644
--- a/AmalgamationTool/DynamORM.Amalgamation.cs
+++ b/AmalgamationTool/DynamORM.Amalgamation.cs
@@ -902,7 +902,7 @@ namespace DynamORM
/// to be used after a connection is opened.
public string Database
{
- get { throw new NotImplementedException(); }
+ get { return Connection.Database; }
}
/// Gets the current state of the connection.
@@ -1767,6 +1767,247 @@ namespace DynamORM
#endregion From/Insert/Update/Delete
+ #region Procedure
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName)
+ {
+ return Procedure(procName, (DynamicExpando)null);
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, params object[] args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, DynamicExpando args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, ExpandoObject args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ #endregion Procedure
+
+ #region Execute
+
+ /// Execute non query.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Number of affected rows.
+ public virtual int Execute(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(sql).AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute non query.
+ /// Command builder.
+ /// Number of affected rows.
+ public virtual int Execute(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(builder)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute non query.
+ /// Command builders.
+ /// Number of affected rows.
+ public virtual int Execute(IDynamicQueryBuilder[] builders)
+ {
+ int ret = 0;
+
+ using (var con = Open())
+ {
+ using (var trans = con.BeginTransaction())
+ {
+ foreach (var builder in builders)
+ {
+ using (var cmd = con.CreateCommand())
+ {
+ ret += cmd
+ .SetCommand(builder)
+ .ExecuteNonQuery();
+ }
+ }
+
+ trans.Commit();
+ }
+ }
+
+ return ret;
+ }
+
+ #endregion Execute
+
+ #region Scalar
+
+ /// Returns a single result.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Result of a query.
+ public virtual object Scalar(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(sql).AddParameters(this, args)
+ .ExecuteScalar();
+ }
+ }
+
+ /// Returns a single result.
+ /// Command builder.
+ /// Result of a query.
+ public virtual object Scalar(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(builder)
+ .ExecuteScalar();
+ }
+ }
+
+ #endregion Scalar
+
+ #region Query
+
+ /// Enumerate the reader and yield the result.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Enumerator of objects expanded from query.
+ public virtual IEnumerable Query(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ using (var rdr = cmd
+ .SetCommand(sql)
+ .AddParameters(this, args)
+ .ExecuteReader())
+ while (rdr.Read())
+ {
+ dynamic val = null;
+
+ // Work around to avoid yield being in try...catch block:
+ // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
+ try
+ {
+ val = rdr.RowToDynamic();
+ }
+ catch (ArgumentException argex)
+ {
+ var sb = new StringBuilder();
+ cmd.Dump(sb);
+
+ throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
+ argex.InnerException.NullOr(a => a, argex));
+ }
+
+ yield return val;
+ }
+ }
+
+ /// Enumerate the reader and yield the result.
+ /// Command builder.
+ /// Enumerator of objects expanded from query.
+ public virtual IEnumerable Query(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ using (var rdr = cmd
+ .SetCommand(builder)
+ .ExecuteReader())
+ while (rdr.Read())
+ {
+ dynamic val = null;
+
+ // Work around to avoid yield being in try...catch block:
+ // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
+ try
+ {
+ val = rdr.RowToDynamic();
+ }
+ catch (ArgumentException argex)
+ {
+ var sb = new StringBuilder();
+ cmd.Dump(sb);
+
+ throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
+ argex.InnerException.NullOr(a => a, argex));
+ }
+
+ yield return val;
+ }
+ }
+
+ #endregion Query
+
#region Schema
/// Builds query cache if necessary and returns it.
@@ -4480,33 +4721,7 @@ namespace DynamORM
/// Enumerator of objects expanded from query.
public virtual IEnumerable Query(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- using (var rdr = cmd
- .SetCommand(sql)
- .AddParameters(Database, args)
- .ExecuteReader())
- while (rdr.Read())
- {
- dynamic val = null;
-
- // Work around to avoid yield being in try...catch block:
- // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
- try
- {
- val = rdr.RowToDynamic();
- }
- catch (ArgumentException argex)
- {
- var sb = new StringBuilder();
- cmd.Dump(sb);
-
- throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
- argex.InnerException.NullOr(a => a, argex));
- }
-
- yield return val;
- }
+ return Database.Query(sql, args);
}
/// Enumerate the reader and yield the result.
@@ -4514,32 +4729,7 @@ namespace DynamORM
/// Enumerator of objects expanded from query.
public virtual IEnumerable Query(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- using (var rdr = cmd
- .SetCommand(builder)
- .ExecuteReader())
- while (rdr.Read())
- {
- dynamic val = null;
-
- // Work around to avoid yield being in try...catch block:
- // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
- try
- {
- val = rdr.RowToDynamic();
- }
- catch (ArgumentException argex)
- {
- var sb = new StringBuilder();
- cmd.Dump(sb);
-
- throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
- argex.InnerException.NullOr(a => a, argex));
- }
-
- yield return val;
- }
+ return Database.Query(builder);
}
/// Create new .
@@ -4563,13 +4753,7 @@ namespace DynamORM
/// Result of a query.
public virtual object Scalar(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(sql).AddParameters(Database, args)
- .ExecuteScalar();
- }
+ return Database.Scalar(sql, args);
}
/// Returns a single result.
@@ -4577,13 +4761,7 @@ namespace DynamORM
/// Result of a query.
public virtual object Scalar(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(builder)
- .ExecuteScalar();
- }
+ return Database.Scalar(builder);
}
/// Execute stored procedure.
@@ -4591,16 +4769,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName);
}
/// Execute stored procedure.
@@ -4609,17 +4778,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, params object[] args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute stored procedure.
@@ -4628,17 +4787,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, DynamicExpando args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute stored procedure.
@@ -4647,17 +4796,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, ExpandoObject args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute non query.
@@ -4668,13 +4807,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Execute(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(sql).AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Execute(sql, args);
}
/// Execute non query.
@@ -4682,41 +4815,15 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Execute(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(builder)
- .ExecuteNonQuery();
- }
+ return Database.Execute(builder);
}
/// Execute non query.
- /// Command builders.
+ /// Command builders.
/// Number of affected rows.
- public virtual int Execute(IDynamicQueryBuilder[] builers)
+ public virtual int Execute(IDynamicQueryBuilder[] builders)
{
- int ret = 0;
-
- using (var con = Database.Open())
- {
- using (var trans = con.BeginTransaction())
- {
- foreach (var builder in builers)
- {
- using (var cmd = con.CreateCommand())
- {
- ret += cmd
- .SetCommand(builder)
- .ExecuteNonQuery();
- }
- }
-
- trans.Commit();
- }
- }
-
- return ret;
+ return Database.Execute(builders);
}
#endregion Basic Queries
diff --git a/DynamORM/DynamicConnection.cs b/DynamORM/DynamicConnection.cs
index dd84cd0..bd01537 100644
--- a/DynamORM/DynamicConnection.cs
+++ b/DynamORM/DynamicConnection.cs
@@ -148,7 +148,7 @@ namespace DynamORM
/// to be used after a connection is opened.
public string Database
{
- get { throw new NotImplementedException(); }
+ get { return Connection.Database; }
}
/// Gets the current state of the connection.
diff --git a/DynamORM/DynamicDatabase.cs b/DynamORM/DynamicDatabase.cs
index 57fc47f..751f14f 100644
--- a/DynamORM/DynamicDatabase.cs
+++ b/DynamORM/DynamicDatabase.cs
@@ -30,6 +30,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
+using System.Dynamic;
using System.Linq;
using System.Text;
using DynamORM.Builders;
@@ -878,6 +879,247 @@ namespace DynamORM
#endregion From/Insert/Update/Delete
+ #region Procedure
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName)
+ {
+ return Procedure(procName, (DynamicExpando)null);
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, params object[] args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, DynamicExpando args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute stored procedure.
+ /// Name of stored procedure to execute.
+ /// Arguments (parameters) in form of expando object.
+ /// Number of affected rows.
+ public virtual int Procedure(string procName, ExpandoObject args)
+ {
+ if ((Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
+ throw new InvalidOperationException("Database connection desn't support stored procedures.");
+
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(CommandType.StoredProcedure, procName)
+ .AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ #endregion Procedure
+
+ #region Execute
+
+ /// Execute non query.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Number of affected rows.
+ public virtual int Execute(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(sql).AddParameters(this, args)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute non query.
+ /// Command builder.
+ /// Number of affected rows.
+ public virtual int Execute(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(builder)
+ .ExecuteNonQuery();
+ }
+ }
+
+ /// Execute non query.
+ /// Command builders.
+ /// Number of affected rows.
+ public virtual int Execute(IDynamicQueryBuilder[] builders)
+ {
+ int ret = 0;
+
+ using (var con = Open())
+ {
+ using (var trans = con.BeginTransaction())
+ {
+ foreach (var builder in builders)
+ {
+ using (var cmd = con.CreateCommand())
+ {
+ ret += cmd
+ .SetCommand(builder)
+ .ExecuteNonQuery();
+ }
+ }
+
+ trans.Commit();
+ }
+ }
+
+ return ret;
+ }
+
+ #endregion Execute
+
+ #region Scalar
+
+ /// Returns a single result.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Result of a query.
+ public virtual object Scalar(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(sql).AddParameters(this, args)
+ .ExecuteScalar();
+ }
+ }
+
+ /// Returns a single result.
+ /// Command builder.
+ /// Result of a query.
+ public virtual object Scalar(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ {
+ return cmd
+ .SetCommand(builder)
+ .ExecuteScalar();
+ }
+ }
+
+ #endregion Scalar
+
+ #region Query
+
+ /// Enumerate the reader and yield the result.
+ /// SQL query containing numbered parameters in format provided by
+ /// methods. Also names should be formatted with
+ /// method.
+ /// Arguments (parameters).
+ /// Enumerator of objects expanded from query.
+ public virtual IEnumerable Query(string sql, params object[] args)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ using (var rdr = cmd
+ .SetCommand(sql)
+ .AddParameters(this, args)
+ .ExecuteReader())
+ while (rdr.Read())
+ {
+ dynamic val = null;
+
+ // Work around to avoid yield being in try...catch block:
+ // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
+ try
+ {
+ val = rdr.RowToDynamic();
+ }
+ catch (ArgumentException argex)
+ {
+ var sb = new StringBuilder();
+ cmd.Dump(sb);
+
+ throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
+ argex.InnerException.NullOr(a => a, argex));
+ }
+
+ yield return val;
+ }
+ }
+
+ /// Enumerate the reader and yield the result.
+ /// Command builder.
+ /// Enumerator of objects expanded from query.
+ public virtual IEnumerable Query(IDynamicQueryBuilder builder)
+ {
+ using (var con = Open())
+ using (var cmd = con.CreateCommand())
+ using (var rdr = cmd
+ .SetCommand(builder)
+ .ExecuteReader())
+ while (rdr.Read())
+ {
+ dynamic val = null;
+
+ // Work around to avoid yield being in try...catch block:
+ // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
+ try
+ {
+ val = rdr.RowToDynamic();
+ }
+ catch (ArgumentException argex)
+ {
+ var sb = new StringBuilder();
+ cmd.Dump(sb);
+
+ throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
+ argex.InnerException.NullOr(a => a, argex));
+ }
+
+ yield return val;
+ }
+ }
+
+ #endregion Query
+
#region Schema
/// Builds query cache if necessary and returns it.
diff --git a/DynamORM/DynamicTable.cs b/DynamORM/DynamicTable.cs
index b8f9721..afcc320 100644
--- a/DynamORM/DynamicTable.cs
+++ b/DynamORM/DynamicTable.cs
@@ -28,10 +28,8 @@
using System;
using System.Collections.Generic;
-using System.Data;
using System.Dynamic;
using System.Linq;
-using System.Text;
using DynamORM.Builders;
using DynamORM.Builders.Extensions;
using DynamORM.Builders.Implementation;
@@ -348,33 +346,7 @@ namespace DynamORM
/// Enumerator of objects expanded from query.
public virtual IEnumerable Query(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- using (var rdr = cmd
- .SetCommand(sql)
- .AddParameters(Database, args)
- .ExecuteReader())
- while (rdr.Read())
- {
- dynamic val = null;
-
- // Work around to avoid yield being in try...catch block:
- // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
- try
- {
- val = rdr.RowToDynamic();
- }
- catch (ArgumentException argex)
- {
- var sb = new StringBuilder();
- cmd.Dump(sb);
-
- throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
- argex.InnerException.NullOr(a => a, argex));
- }
-
- yield return val;
- }
+ return Database.Query(sql, args);
}
/// Enumerate the reader and yield the result.
@@ -382,32 +354,7 @@ namespace DynamORM
/// Enumerator of objects expanded from query.
public virtual IEnumerable Query(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- using (var rdr = cmd
- .SetCommand(builder)
- .ExecuteReader())
- while (rdr.Read())
- {
- dynamic val = null;
-
- // Work around to avoid yield being in try...catch block:
- // http://stackoverflow.com/questions/346365/why-cant-yield-return-appear-inside-a-try-block-with-a-catch
- try
- {
- val = rdr.RowToDynamic();
- }
- catch (ArgumentException argex)
- {
- var sb = new StringBuilder();
- cmd.Dump(sb);
-
- throw new ArgumentException(string.Format("{0}{1}{2}", argex.Message, Environment.NewLine, sb),
- argex.InnerException.NullOr(a => a, argex));
- }
-
- yield return val;
- }
+ return Database.Query(builder);
}
/// Create new .
@@ -431,13 +378,7 @@ namespace DynamORM
/// Result of a query.
public virtual object Scalar(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(sql).AddParameters(Database, args)
- .ExecuteScalar();
- }
+ return Database.Scalar(sql, args);
}
/// Returns a single result.
@@ -445,13 +386,7 @@ namespace DynamORM
/// Result of a query.
public virtual object Scalar(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(builder)
- .ExecuteScalar();
- }
+ return Database.Scalar(builder);
}
/// Execute stored procedure.
@@ -459,16 +394,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName);
}
/// Execute stored procedure.
@@ -477,17 +403,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, params object[] args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute stored procedure.
@@ -496,17 +412,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, DynamicExpando args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute stored procedure.
@@ -515,17 +421,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Procedure(string procName, ExpandoObject args)
{
- if ((Database.Options & DynamicDatabaseOptions.SupportStoredProcedures) != DynamicDatabaseOptions.SupportStoredProcedures)
- throw new InvalidOperationException("Database connection desn't support stored procedures.");
-
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(CommandType.StoredProcedure, procName)
- .AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Procedure(procName, args);
}
/// Execute non query.
@@ -536,13 +432,7 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Execute(string sql, params object[] args)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(sql).AddParameters(Database, args)
- .ExecuteNonQuery();
- }
+ return Database.Execute(sql, args);
}
/// Execute non query.
@@ -550,41 +440,15 @@ namespace DynamORM
/// Number of affected rows.
public virtual int Execute(IDynamicQueryBuilder builder)
{
- using (var con = Database.Open())
- using (var cmd = con.CreateCommand())
- {
- return cmd
- .SetCommand(builder)
- .ExecuteNonQuery();
- }
+ return Database.Execute(builder);
}
/// Execute non query.
- /// Command builders.
+ /// Command builders.
/// Number of affected rows.
- public virtual int Execute(IDynamicQueryBuilder[] builers)
+ public virtual int Execute(IDynamicQueryBuilder[] builders)
{
- int ret = 0;
-
- using (var con = Database.Open())
- {
- using (var trans = con.BeginTransaction())
- {
- foreach (var builder in builers)
- {
- using (var cmd = con.CreateCommand())
- {
- ret += cmd
- .SetCommand(builder)
- .ExecuteNonQuery();
- }
- }
-
- trans.Commit();
- }
- }
-
- return ret;
+ return Database.Execute(builders);
}
#endregion Basic Queries