Skip to content

Commit 8f336b4

Browse files
Added async methods, and Fixed nuget package
1 parent eeadbc4 commit 8f336b4

8 files changed

Lines changed: 106 additions & 9 deletions

File tree

FluentSql/DapperHelpers.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,5 +105,33 @@ internal static object ExecuteScalar(IDbConnection connection, string sql, objec
105105
finally
106106
{ }
107107
}
108+
109+
internal static async Task<object> ExecuteScalarAsync(IDbConnection connection, string sql, object parameters = null, IDbTransaction transaction = null,
110+
int? commandTimeout = null, CommandType? commandType = null)
111+
{
112+
try
113+
{
114+
var result = await connection.ExecuteScalarAsync(sql, parameters, transaction, commandTimeout, commandType);
115+
116+
return result;
117+
118+
}
119+
finally
120+
{ }
121+
}
122+
123+
internal static async Task<T> ExecuteScalarAsync<T>(IDbConnection connection, string sql, object parameters = null, IDbTransaction transaction = null,
124+
int? commandTimeout = null, CommandType? commandType = null)
125+
{
126+
try
127+
{
128+
var result = await connection.ExecuteScalarAsync<T>(sql, parameters, transaction, commandTimeout, commandType);
129+
130+
return result;
131+
132+
}
133+
finally
134+
{ }
135+
}
108136
}
109137
}
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public class EntityMapper
4141
public EntityMapper(IDbConnection dbConnection, IEnumerable<Database> targetDatabases, Assembly[] assembliesOfModelTypes = null,
4242
IDatabaseMapper defaultDatabaseMapper = null, Action onPostEntityMapping = null, ISqlGenerator sqlGenerator = null)
4343
{
44-
if (dbConnection == null || targetDatabases == null)
45-
throw new ArgumentNullException("Database connection, or Database names can not be null.");
44+
if (dbConnection == null )
45+
throw new ArgumentNullException("Database connection can not be null.");
4646

4747
if (sqlGenerator != null)
4848
SqlGenerator = sqlGenerator;
@@ -64,6 +64,10 @@ public EntityMapper(IDbConnection dbConnection, IEnumerable<Database> allDatabas
6464
this(dbConnection, allDatabases, null, null, onPostEntityMapping)
6565
{ }
6666

67+
public EntityMapper(IDbConnection dbConnection) :
68+
this(dbConnection, new List<Database> { new Database { Name = dbConnection.Database, TableNamesInPlural = true } }, null, null, null)
69+
{ }
70+
6771
public EntityMapper(IDbConnection dbConnection, bool tableNamesInPlural = true) :
6872
this(dbConnection, new List<Database> { new Database { Name = dbConnection.Database, TableNamesInPlural = tableNamesInPlural } }, null, null, null)
6973
{ }

FluentSql/EntityStore.cs

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,20 @@ public async Task<IEnumerable<T>> GetAllAsync<T>()
290290
var insertQuery = SqlGenerator.Insert<T>(entity);
291291
IEnumerable<T> entityIn = DapperHelper.Query<T>(DbConnection, insertQuery.ToSql(), insertQuery.Parameters);
292292

293+
if (entityIn == null) return default(T);
294+
295+
T result = entityIn.FirstOrDefault();
296+
297+
return result;
298+
}
299+
300+
public async Task<T> InsertAsync<T>(T entity) where T : new()
301+
{
302+
var insertQuery = SqlGenerator.Insert<T>(entity);
303+
IEnumerable<T> entityIn = await DapperHelper.QueryAsync<T>(DbConnection, insertQuery.ToSql(), insertQuery.Parameters);
304+
305+
if (entityIn == null) return default(T);
306+
293307
T result = entityIn.FirstOrDefault();
294308

295309
return result;
@@ -342,6 +356,18 @@ public int UpdateByKey<T>(T entity)
342356
return recordsAffected;
343357
}
344358

359+
public async Task<int> UpdateByKeyAsync<T>(T entity)
360+
{
361+
if (entity == null) return 0 ;
362+
363+
var updateQuery = SqlGenerator.Update<T>(entity);
364+
var query = GetQueryByKey<T>(entity, updateQuery);
365+
366+
var recordsAffected = await DapperHelper.ExecuteScalarAsync(DbConnection, updateQuery.ToSql(), updateQuery.Parameters);
367+
368+
return (int)recordsAffected;
369+
}
370+
345371
#endregion
346372

347373
#region Delete
@@ -363,6 +389,18 @@ public int DeleteByKey<T>(dynamic entity)
363389

364390
return recordsAffected;
365391
}
392+
393+
public async Task<int> DeleteByKeyAsync<T>(dynamic entity)
394+
{
395+
if (entity == null) return 0;
396+
397+
var deleteQuery = SqlGenerator.Delete<T>();
398+
var query = GetQueryByKey<T>(entity, deleteQuery);
399+
400+
var recordsAffected = await DapperHelper.ExecuteScalarAsync(DbConnection, deleteQuery.ToSql(), deleteQuery.Parameters);
401+
402+
return (int)recordsAffected;
403+
}
366404
#endregion
367405

368406
#region Get query objects
@@ -491,7 +529,7 @@ public IEnumerable<TResult> ExecuteQuery<T, R, TResult>(IQuery<T> query)
491529
return entities;
492530
}
493531

494-
public async Task<IEnumerable<TResult>> ExecuteQueryAsyc<T, R, TResult>(IQuery<T> query, IDbTransaction dbTransaction, int? commandTimeout = null)
532+
public async Task<IEnumerable<TResult>> ExecuteQueryAsyc<T, R, TResult>(IQuery<T> query, IDbTransaction dbTransaction = null, int? commandTimeout = null)
495533
{
496534
var entities = await DapperHelper.QueryAsync<TResult>(DbConnection, query.ToSql(), query.Parameters, dbTransaction, commandTimeout, CommandType.Text);
497535

@@ -510,6 +548,21 @@ public object ExecuteScalar<T>(IQuery<T> query)
510548
return DapperHelper.ExecuteScalar(DbConnection, query.ToSql(), query.Parameters, null, null, CommandType.Text);
511549
}
512550

551+
public object ExecuteScalar<T>(IQuery<T> query, IDbTransaction dbTransaction, int? commandTimeout = null)
552+
{
553+
return DapperHelper.ExecuteScalar(DbConnection, query.ToSql(), query.Parameters, dbTransaction, commandTimeout, CommandType.Text);
554+
}
555+
556+
public async Task<T> ExecuteScalarAsync<T>(IQuery<T> query, IDbTransaction dbTransaction, int? commandTimeout = null)
557+
{
558+
return await DapperHelper.ExecuteScalarAsync<T>(DbConnection, query.ToSql(), query.Parameters, dbTransaction, commandTimeout, CommandType.Text);
559+
}
560+
561+
public async Task<T> ExecuteScalarAsync<T>(IQuery<T> query)
562+
{
563+
return await DapperHelper.ExecuteScalarAsync<T>(DbConnection, query.ToSql(), query.Parameters, null, null, CommandType.Text);
564+
}
565+
513566
#endregion
514567

515568
#region Stored Procedures - SQL script Execution

FluentSql/FluentSql.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
<WarningLevel>4</WarningLevel>
3131
</PropertyGroup>
3232
<ItemGroup>
33-
<Reference Include="Dapper, Version=1.50.2.0, Culture=neutral, processorArchitecture=MSIL">
34-
<HintPath>packages\Dapper.1.50.2\lib\net451\Dapper.dll</HintPath>
33+
<Reference Include="Dapper, Version=1.40.0.0, Culture=neutral, processorArchitecture=MSIL">
34+
<HintPath>packages\Dapper.1.42\lib\net45\Dapper.dll</HintPath>
3535
<Private>True</Private>
3636
</Reference>
3737
<Reference Include="System" />
@@ -55,7 +55,7 @@
5555
<Compile Include="Mappers\IEntityMap.cs" />
5656
<Compile Include="Mappers\IPropertyMap.cs" />
5757
<Compile Include="Mappers\EntityMap.cs" />
58-
<Compile Include="Mappers\EntityMapper.cs" />
58+
<Compile Include="EntityMapper.cs" />
5959
<Compile Include="Mappers\PropertyMap.cs" />
6060
<Compile Include="EntityReaders\IEntityReader.cs" />
6161
<Compile Include="EntityReaders\DefaultEntityReader.cs" />

FluentSql/FluentSql.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>FluentSql</id>
5-
<version>1.0.7.1</version>
5+
<version>1.0.7.3</version>
66
<authors>Ernesto.Herrera</authors>
77
<owners>Ernesto.Herrera</owners>
88
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0</licenseUrl>

FluentSql/IEntityStore.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ Task<IEnumerable<TResult>> GetWithJoinAsync<T, R, TResult>(Expression<Func<T, R,
156156
/// <returns>The new entity which autoincremented field represents the new number</returns>
157157
T Insert<T>(T entity) where T : new();
158158

159+
Task<T> InsertAsync<T>(T entity) where T : new();
160+
159161
/// <summary>
160162
/// Inserts multiple entities into the database. One entity at a time.
161163
/// </summary>
@@ -175,6 +177,8 @@ Task<IEnumerable<TResult>> GetWithJoinAsync<T, R, TResult>(Expression<Func<T, R,
175177
/// <returns></returns>
176178
int UpdateByKey<T>(T entity);
177179

180+
Task<int> UpdateByKeyAsync<T>(T entity);
181+
178182
#endregion
179183

180184
#region Delete
@@ -186,6 +190,8 @@ Task<IEnumerable<TResult>> GetWithJoinAsync<T, R, TResult>(Expression<Func<T, R,
186190
/// <param name="entity"></param>
187191
/// <returns></returns>
188192
int DeleteByKey<T>(dynamic entity);
193+
194+
Task<int> DeleteByKeyAsync<T>(dynamic entity);
189195
#endregion
190196

191197
#region Get query objects
@@ -271,6 +277,12 @@ Task<IEnumerable<TResult>> GetWithJoinAsync<T, R, TResult>(Expression<Func<T, R,
271277
IEnumerable<Tuple<T, R>> ExecuteQuery<T, R>(IQuery<T> query);
272278

273279
object ExecuteScalar<T>(IQuery<T> query);
280+
281+
object ExecuteScalar<T>(IQuery<T> query, IDbTransaction dbTransaction, int? commandTimeout = null);
282+
283+
Task<T> ExecuteScalarAsync<T>(IQuery<T> query);
284+
285+
Task<T> ExecuteScalarAsync<T>(IQuery<T> query, IDbTransaction dbTransaction, int? commandTimeout = null);
274286
#endregion
275287
}
276288
}

FluentSql/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@
3131
// You can specify all the values or you can default the Build and Revision Numbers
3232
// by using the '*' as shown below:
3333
// [assembly: AssemblyVersion("1.0.*")]
34-
[assembly: AssemblyVersion("1.0.7.2")]
34+
[assembly: AssemblyVersion("1.0.7.3")]

FluentSql/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Dapper" version="1.50.2" targetFramework="net452" />
3+
<package id="Dapper" version="1.42" targetFramework="net452" />
44
</packages>

0 commit comments

Comments
 (0)