...
 
Commits (4)
    https://gitcode.net/s0611163/Dapper.Lite/-/commit/ec8e6501e19ef761c34d98e89937c136c3533a96 IDbSession接口增加SetCommandType方法,以支持调用存储过程; 删除多余的OnExecuting调用; 2023-12-08T14:36:14+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/Dapper.Lite/-/commit/472b7e0b74d2c0ba19e7ea644693347e9ed20a92 IDbSession接口增加设置Dapper参数的方法SetCommandTimeout和SetBuffered 2023-12-08T14:43:09+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/Dapper.Lite/-/commit/c95e2a899e35bf8ecc05f433de84134604e95adf IDbSession接口新增查询并返回DataTable的方法 2023-12-08T15:41:05+08:00 suxiang 651029594@qq.com https://gitcode.net/s0611163/Dapper.Lite/-/commit/92f991a3fd5cb9683b80e8bdef301e6beb7fa56d v2.0.8 2023-12-08T15:46:47+08:00 suxiang 651029594@qq.com
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
<GenerateDocumentationFile>True</GenerateDocumentationFile> <GenerateDocumentationFile>True</GenerateDocumentationFile>
<Title>Dapper.Lite</Title> <Title>Dapper.Lite</Title>
<AssemblyVersion>2.0.7</AssemblyVersion> <AssemblyVersion>2.0.8</AssemblyVersion>
<FileVersion>2.0.7</FileVersion> <FileVersion>2.0.8</FileVersion>
<Version>2.0.7</Version> <Version>2.0.8</Version>
<PackageId>Dapper.Lite</PackageId> <PackageId>Dapper.Lite</PackageId>
<PackageProjectUrl>https://github.com/0611163/Dapper.Lite</PackageProjectUrl> <PackageProjectUrl>https://github.com/0611163/Dapper.Lite</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
...@@ -20,7 +20,10 @@ ...@@ -20,7 +20,10 @@
</Description> </Description>
<PackageReleaseNotes> <PackageReleaseNotes>
更新内容: 更新内容:
1. 移除接口的where T : new()限制,以支持QueryList<string> 1. 新增:IDbSession接口增加SetCommandType方法,以支持调用存储过程
2. 优化:删除重复的OnExecuting调用
3. 新增:IDbSession接口新增查询并返回DataTable的方法
4. 新增:IDbSession接口增加设置Dapper参数的方法SetCommandTimeout和SetBuffered
</PackageReleaseNotes> </PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
......
...@@ -86,6 +86,12 @@ namespace Dapper.Lite ...@@ -86,6 +86,12 @@ namespace Dapper.Lite
/// </summary> /// </summary>
public DbConnection Conn => _tran?.Connection; public DbConnection Conn => _tran?.Connection;
private CommandType _commandType = CommandType.Text;
private int? _commandTimeout = null; // Dapper参数
private bool _buffered = true; // Dapper参数
#endregion #endregion
#region 静态构造函数 #region 静态构造函数
...@@ -254,5 +260,36 @@ namespace Dapper.Lite ...@@ -254,5 +260,36 @@ namespace Dapper.Lite
} }
#endregion #endregion
#region 设置CommandType
/// <summary>
/// 设置CommandType
/// </summary>
public IDbSession SetCommandType(CommandType commandType)
{
_commandType = commandType;
return this;
}
#endregion
#region Dapper参数设置
/// <summary>
/// 设置Dapper参数commandTimeout
/// </summary>
public IDbSession SetCommandTimeout(int? commandTimeout)
{
_commandTimeout = commandTimeout;
return this;
}
/// <summary>
/// 设置Dapper参数buffered
/// </summary>
public IDbSession SetBuffered(bool buffered)
{
_buffered = buffered;
return this;
}
#endregion
} }
} }
...@@ -47,8 +47,6 @@ namespace Dapper.Lite ...@@ -47,8 +47,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType))); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType)));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -90,8 +88,6 @@ namespace Dapper.Lite ...@@ -90,8 +88,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType))); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}={2}", GetTableName(_provider, type), idNameWithQuote, _provider.GetParameterName(idName, idType)));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -122,8 +118,6 @@ namespace Dapper.Lite ...@@ -122,8 +118,6 @@ namespace Dapper.Lite
sbSql.Remove(sbSql.Length - 1, 1); sbSql.Remove(sbSql.Length - 1, 1);
sbSql.Append(")"); sbSql.Append(")");
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -153,8 +147,6 @@ namespace Dapper.Lite ...@@ -153,8 +147,6 @@ namespace Dapper.Lite
sbSql.Remove(sbSql.Length - 1, 1); sbSql.Remove(sbSql.Length - 1, 1);
sbSql.Append(")"); sbSql.Append(")");
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -200,8 +192,6 @@ namespace Dapper.Lite ...@@ -200,8 +192,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), null);
return Execute(sbSql.ToString()); return Execute(sbSql.ToString());
} }
#endregion #endregion
...@@ -219,8 +209,6 @@ namespace Dapper.Lite ...@@ -219,8 +209,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), null);
return await ExecuteAsync(sbSql.ToString()); return await ExecuteAsync(sbSql.ToString());
} }
#endregion #endregion
...@@ -265,8 +253,6 @@ namespace Dapper.Lite ...@@ -265,8 +253,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return Execute(sbSql.ToString(), cmdParms); return Execute(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
...@@ -284,8 +270,6 @@ namespace Dapper.Lite ...@@ -284,8 +270,6 @@ namespace Dapper.Lite
Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate(); Tuple<string, string> delTmpl = _provider.CreateDeleteSqlTempldate();
sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition)); sbSql.Append(string.Format(delTmpl.Item1 + " {0} " + delTmpl.Item2 + " {1}", GetTableName(_provider, type), condition));
OnExecuting?.Invoke(sbSql.ToString(), cmdParms);
return await ExecuteAsync(sbSql.ToString(), cmdParms); return await ExecuteAsync(sbSql.ToString(), cmdParms);
} }
#endregion #endregion
......
...@@ -28,7 +28,6 @@ namespace Dapper.Lite ...@@ -28,7 +28,6 @@ namespace Dapper.Lite
public bool Exists(string sqlString) public bool Exists(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
...@@ -50,7 +49,6 @@ namespace Dapper.Lite ...@@ -50,7 +49,6 @@ namespace Dapper.Lite
public async Task<bool> ExistsAsync(string sqlString) public async Task<bool> ExistsAsync(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
...@@ -74,7 +72,6 @@ namespace Dapper.Lite ...@@ -74,7 +72,6 @@ namespace Dapper.Lite
public T QuerySingle<T>(string sqlString) public T QuerySingle<T>(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
...@@ -97,7 +94,6 @@ namespace Dapper.Lite ...@@ -97,7 +94,6 @@ namespace Dapper.Lite
public object QuerySingle(string sqlString) public object QuerySingle(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = ExecuteScalar(sqlString); object obj = ExecuteScalar(sqlString);
...@@ -120,7 +116,6 @@ namespace Dapper.Lite ...@@ -120,7 +116,6 @@ namespace Dapper.Lite
public async Task<T> QuerySingleAsync<T>(string sqlString) public async Task<T> QuerySingleAsync<T>(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
...@@ -143,7 +138,6 @@ namespace Dapper.Lite ...@@ -143,7 +138,6 @@ namespace Dapper.Lite
public async Task<object> QuerySingleAsync(string sqlString) public async Task<object> QuerySingleAsync(string sqlString)
{ {
SqlFilter(ref sqlString); SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
object obj = await ExecuteScalarAsync(sqlString); object obj = await ExecuteScalarAsync(sqlString);
...@@ -222,9 +216,6 @@ namespace Dapper.Lite ...@@ -222,9 +216,6 @@ namespace Dapper.Lite
/// </summary> /// </summary>
public bool Exists(string sqlString, DbParameter[] cmdParms) public bool Exists(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -244,9 +235,6 @@ namespace Dapper.Lite ...@@ -244,9 +235,6 @@ namespace Dapper.Lite
/// </summary> /// </summary>
public async Task<bool> ExistsAsync(string sqlString, DbParameter[] cmdParms) public async Task<bool> ExistsAsync(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalarAsync(sqlString, cmdParms); object obj = ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -269,9 +257,6 @@ namespace Dapper.Lite ...@@ -269,9 +257,6 @@ namespace Dapper.Lite
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public T QuerySingle<T>(string sqlString, DbParameter[] cmdParms) public T QuerySingle<T>(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -293,9 +278,6 @@ namespace Dapper.Lite ...@@ -293,9 +278,6 @@ namespace Dapper.Lite
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public object QuerySingle(string sqlString, DbParameter[] cmdParms) public object QuerySingle(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = ExecuteScalar(sqlString, cmdParms); object obj = ExecuteScalar(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -317,9 +299,6 @@ namespace Dapper.Lite ...@@ -317,9 +299,6 @@ namespace Dapper.Lite
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public async Task<T> QuerySingleAsync<T>(string sqlString, DbParameter[] cmdParms) public async Task<T> QuerySingleAsync<T>(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = await ExecuteScalarAsync(sqlString, cmdParms); object obj = await ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -341,9 +320,6 @@ namespace Dapper.Lite ...@@ -341,9 +320,6 @@ namespace Dapper.Lite
/// <param name="cmdParms">参数</param> /// <param name="cmdParms">参数</param>
public async Task<object> QuerySingleAsync(string sqlString, DbParameter[] cmdParms) public async Task<object> QuerySingleAsync(string sqlString, DbParameter[] cmdParms)
{ {
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, cmdParms);
object obj = await ExecuteScalarAsync(sqlString, cmdParms); object obj = await ExecuteScalarAsync(sqlString, cmdParms);
if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value)) if (object.Equals(obj, null) || object.Equals(obj, DBNull.Value))
...@@ -537,11 +513,13 @@ namespace Dapper.Lite ...@@ -537,11 +513,13 @@ namespace Dapper.Lite
#region ExecuteScalar #region ExecuteScalar
internal object ExecuteScalar(string sqlString, DbParameter[] cmdParms = null) internal object ExecuteScalar(string sqlString, DbParameter[] cmdParms = null)
{ {
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
{ {
return conn.ExecuteScalar(sqlString, ToDynamicParameters(cmdParms), _tran); return conn.ExecuteScalar(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
} }
finally finally
{ {
...@@ -556,11 +534,13 @@ namespace Dapper.Lite ...@@ -556,11 +534,13 @@ namespace Dapper.Lite
#region ExecuteScalarAsync #region ExecuteScalarAsync
internal async Task<object> ExecuteScalarAsync(string sqlString, DbParameter[] cmdParms = null) internal async Task<object> ExecuteScalarAsync(string sqlString, DbParameter[] cmdParms = null)
{ {
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
{ {
return await conn.ExecuteScalarAsync(sqlString, ToDynamicParameters(cmdParms), _tran); return await conn.ExecuteScalarAsync(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
} }
finally finally
{ {
...@@ -575,11 +555,13 @@ namespace Dapper.Lite ...@@ -575,11 +555,13 @@ namespace Dapper.Lite
#region Execute #region Execute
internal int Execute(string sqlString, DbParameter[] cmdParms = null) internal int Execute(string sqlString, DbParameter[] cmdParms = null)
{ {
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
{ {
return conn.Execute(sqlString, ToDynamicParameters(cmdParms), _tran); return conn.Execute(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
} }
finally finally
{ {
...@@ -594,11 +576,124 @@ namespace Dapper.Lite ...@@ -594,11 +576,124 @@ namespace Dapper.Lite
#region ExecuteAsync #region ExecuteAsync
internal async Task<int> ExecuteAsync(string sqlString, DbParameter[] cmdParms = null) internal async Task<int> ExecuteAsync(string sqlString, DbParameter[] cmdParms = null)
{ {
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran);
try
{
return await conn.ExecuteAsync(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
#endregion
#region 查询并返回DataTable
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
public DataTable QueryDataTable(string sqlString)
{
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
var conn = GetConnection(_tran);
try
{
var reader = conn.ExecuteReader(sqlString, null, _tran, _commandTimeout, _commandType);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
public async Task<DataTable> QueryDataTableAsync(string sqlString)
{
SqlFilter(ref sqlString);
OnExecuting?.Invoke(sqlString, null);
var conn = GetConnection(_tran);
try
{
var reader = await conn.ExecuteReaderAsync(sqlString, null, _tran, _commandTimeout, _commandType);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
public DataTable QueryDataTable(string sqlString, DbParameter[] cmdParms)
{
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran);
try
{
var reader = conn.ExecuteReader(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
finally
{
if (_tran == null)
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
}
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
public async Task<DataTable> QueryDataTableAsync(string sqlString, DbParameter[] cmdParms)
{
OnExecuting?.Invoke(sqlString, cmdParms);
var conn = GetConnection(_tran); var conn = GetConnection(_tran);
try try
{ {
return await conn.ExecuteAsync(sqlString, ToDynamicParameters(cmdParms), _tran); var reader = await conn.ExecuteReaderAsync(sqlString, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType);
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
} }
finally finally
{ {
......
...@@ -212,7 +212,7 @@ namespace Dapper.Lite ...@@ -212,7 +212,7 @@ namespace Dapper.Lite
try try
{ {
return conn.QueryFirstOrDefault(type, sql, ToDynamicParameters(parameters), _tran); return conn.QueryFirstOrDefault(type, sql, ToDynamicParameters(parameters), _tran, _commandTimeout, _commandType);
} }
finally finally
{ {
...@@ -237,7 +237,7 @@ namespace Dapper.Lite ...@@ -237,7 +237,7 @@ namespace Dapper.Lite
try try
{ {
return await conn.QueryFirstOrDefaultAsync(type, sql, ToDynamicParameters(parameters), _tran); return await conn.QueryFirstOrDefaultAsync(type, sql, ToDynamicParameters(parameters), _tran, _commandTimeout, _commandType);
} }
finally finally
{ {
......
...@@ -26,7 +26,7 @@ namespace Dapper.Lite ...@@ -26,7 +26,7 @@ namespace Dapper.Lite
try try
{ {
return conn.Query<T>(sql, null, _tran).ToList(); return conn.Query<T>(sql, null, _tran, _buffered, _commandTimeout, _commandType).ToList();
} }
finally finally
{ {
...@@ -52,7 +52,7 @@ namespace Dapper.Lite ...@@ -52,7 +52,7 @@ namespace Dapper.Lite
try try
{ {
return (await conn.QueryAsync<T>(sql, null, _tran)).ToList(); return (await conn.QueryAsync<T>(sql, null, _tran, _commandTimeout, _commandType)).ToList();
} }
finally finally
{ {
...@@ -78,7 +78,7 @@ namespace Dapper.Lite ...@@ -78,7 +78,7 @@ namespace Dapper.Lite
try try
{ {
return conn.Query<T>(sql, ToDynamicParameters(cmdParms), _tran).ToList(); return conn.Query<T>(sql, ToDynamicParameters(cmdParms), _tran, _buffered, _commandTimeout, _commandType).ToList();
} }
finally finally
{ {
...@@ -103,7 +103,7 @@ namespace Dapper.Lite ...@@ -103,7 +103,7 @@ namespace Dapper.Lite
try try
{ {
return (await conn.QueryAsync<T>(sql, ToDynamicParameters(cmdParms), _tran)).ToList(); return (await conn.QueryAsync<T>(sql, ToDynamicParameters(cmdParms), _tran, _commandTimeout, _commandType)).ToList();
} }
finally finally
{ {
......
...@@ -24,8 +24,6 @@ namespace Dapper.Lite ...@@ -24,8 +24,6 @@ namespace Dapper.Lite
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
...@@ -40,8 +38,6 @@ namespace Dapper.Lite ...@@ -40,8 +38,6 @@ namespace Dapper.Lite
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
strSql.Append(";" + selectIdSql + ";"); strSql.Append(";" + selectIdSql + ";");
OnExecuting?.Invoke(strSql.ToString(), parameters);
object id = ExecuteScalar(strSql.ToString(), parameters); object id = ExecuteScalar(strSql.ToString(), parameters);
return Convert.ToInt64(id); return Convert.ToInt64(id);
} }
...@@ -58,8 +54,6 @@ namespace Dapper.Lite ...@@ -58,8 +54,6 @@ namespace Dapper.Lite
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
...@@ -74,8 +68,6 @@ namespace Dapper.Lite ...@@ -74,8 +68,6 @@ namespace Dapper.Lite
PrepareInsertSql(obj, ref strSql, ref parameters); PrepareInsertSql(obj, ref strSql, ref parameters);
strSql.Append(";" + selectIdSql + ";"); strSql.Append(";" + selectIdSql + ";");
OnExecuting?.Invoke(strSql.ToString(), parameters);
object id = await ExecuteScalarAsync(strSql.ToString(), parameters); object id = await ExecuteScalarAsync(strSql.ToString(), parameters);
return Convert.ToInt64(id); return Convert.ToInt64(id);
} }
...@@ -105,8 +97,6 @@ namespace Dapper.Lite ...@@ -105,8 +97,6 @@ namespace Dapper.Lite
PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount); PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount);
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -136,8 +126,6 @@ namespace Dapper.Lite ...@@ -136,8 +126,6 @@ namespace Dapper.Lite
PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount); PrepareInsertSql<T>(listPage, ref strSql, ref parameters, ref savedCount);
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
......
...@@ -69,8 +69,6 @@ namespace Dapper.Lite ...@@ -69,8 +69,6 @@ namespace Dapper.Lite
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -93,8 +91,6 @@ namespace Dapper.Lite ...@@ -93,8 +91,6 @@ namespace Dapper.Lite
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
...@@ -139,8 +135,6 @@ namespace Dapper.Lite ...@@ -139,8 +135,6 @@ namespace Dapper.Lite
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
Execute(strSql.ToString(), parameters); Execute(strSql.ToString(), parameters);
} }
} }
...@@ -186,8 +180,6 @@ namespace Dapper.Lite ...@@ -186,8 +180,6 @@ namespace Dapper.Lite
if (savedCount > 0) if (savedCount > 0)
{ {
OnExecuting?.Invoke(strSql.ToString(), parameters);
await ExecuteAsync(strSql.ToString(), parameters); await ExecuteAsync(strSql.ToString(), parameters);
} }
} }
......
...@@ -105,5 +105,24 @@ namespace Dapper.Lite ...@@ -105,5 +105,24 @@ namespace Dapper.Lite
void SetTypeMap<T>(); void SetTypeMap<T>();
#endregion #endregion
#region 设置CommandType
/// <summary>
/// 设置CommandType
/// </summary>
IDbSession SetCommandType(CommandType commandType);
#endregion
#region Dapper参数设置
/// <summary>
/// 设置Dapper参数commandTimeout
/// </summary>
IDbSession SetCommandTimeout(int? commandTimeout);
/// <summary>
/// 设置Dapper参数buffered
/// </summary>
IDbSession SetBuffered(bool buffered);
#endregion
} }
} }
...@@ -151,6 +151,34 @@ namespace Dapper.Lite ...@@ -151,6 +151,34 @@ namespace Dapper.Lite
#endregion #endregion
#region 查询并返回DataTable
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
DataTable QueryDataTable(string sqlString);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
Task<DataTable> QueryDataTableAsync(string sqlString);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
DataTable QueryDataTable(string sqlString, DbParameter[] cmdParms);
/// <summary>
/// 执行查询语句,返回DbDataReader
/// </summary>
/// <param name="sqlString">查询语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>IDataReader</returns>
Task<DataTable> QueryDataTableAsync(string sqlString, DbParameter[] cmdParms);
#endregion
#region SqlString #region SqlString
/// <summary> /// <summary>
......
...@@ -490,6 +490,17 @@ namespace Dapper.Lite ...@@ -490,6 +490,17 @@ namespace Dapper.Lite
Dictionary<string, object> dict = new Dictionary<string, object>(); Dictionary<string, object> dict = new Dictionary<string, object>();
MatchCollection mc = _regex.Matches(sql); MatchCollection mc = _regex.Matches(sql);
int argIndex = 0; int argIndex = 0;
if (isAnonymous && mc.Count == 0) //存储过程的情况
{
foreach (string name in anonymousValues.Keys)
{
object obj = anonymousValues[name];
dict.Add(name, obj);
}
return dict;
}
foreach (Match m in mc) foreach (Match m in mc)
{ {
var oldSql = m.Value; var oldSql = m.Value;
...@@ -519,6 +530,7 @@ namespace Dapper.Lite ...@@ -519,6 +530,7 @@ namespace Dapper.Lite
sql = ReplaceSql(sql, oldSql, name, parameterType); sql = ReplaceSql(sql, oldSql, name, parameterType);
} }
} }
return dict; return dict;
} }
#endregion #endregion
......
...@@ -6,6 +6,7 @@ using System.Collections.Generic; ...@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Dapper.Lite; using Dapper.Lite;
using Utils; using Utils;
using System.Data;
namespace Dapper.LiteTest namespace Dapper.LiteTest
{ {
...@@ -446,5 +447,54 @@ namespace Dapper.LiteTest ...@@ -446,5 +447,54 @@ namespace Dapper.LiteTest
} }
#endregion #endregion
#region 测试调用存储过程
[TestMethod]
public void TestStoredProcedure()
{
var session = DapperLiteFactory.GetSession();
session.OnExecuting = (s, p) =>
{
Console.WriteLine(s);
};
List<dynamic> list = session.SetCommandType(CommandType.StoredProcedure).Sql("query_user", new { maxId = 20 }).ToList<dynamic>();
foreach (var item in list)
{
Console.WriteLine($"{item.user_name}, {item.real_name}, {item.remark}");
}
Assert.IsTrue(list.Count > 0);
list = session.SetCommandType(CommandType.Text).Sql("select user_name, real_name, remark from sys_user where id<=@Id", 20).ToList<dynamic>();
Assert.IsTrue(list.Count > 0);
}
#endregion
#region 测试查询并返回DataTable
[TestMethod]
public void TestReturnDataTable()
{
var session = DapperLiteFactory.GetSession();
session.OnExecuting = (s, p) =>
{
Console.WriteLine(s);
};
var sql = session.Sql("select * from sys_user where id<=@Id", 20);
DataTable dt = session.QueryDataTable(sql.SQL, sql.Params);
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine($"{dr["user_name"]}, {dr["real_name"]}, {dr["remark"]}");
}
Assert.IsTrue(dt.Rows.Count > 0);
var list = sql.ToList<dynamic>();
Assert.IsTrue(list.Count > 0);
}
#endregion
} }
} }
/*
Navicat MySQL Data Transfer
Source Server : localhost
Source Server Version : 50728
Source Host : localhost:3306
Source Database : litesql_test
Target Server Type : MYSQL
Target Server Version : 50728
File Encoding : 65001
Date: 2023-12-08 13:30:02
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Procedure structure for `query_user`
-- ----------------------------
DROP PROCEDURE IF EXISTS `query_user`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `query_user`(in maxId BIGINT)
BEGIN
SELECT * from sys_user where id<=maxId;
END
;;
DELIMITER ;