Skip to content

Commit

Permalink
Unit of Work needs to save changes on data modification operations
Browse files Browse the repository at this point in the history
  • Loading branch information
Yuck committed Feb 4, 2021
1 parent 02d4300 commit 2c4dd2c
Show file tree
Hide file tree
Showing 12 changed files with 34 additions and 37 deletions.
15 changes: 3 additions & 12 deletions src/YuckQi.Data.Sql.Dapper/Providers/Abstract/DataProviderBase.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,22 @@
using System;
using System.Data;
using YuckQi.Data.Abstract;

namespace YuckQi.Data.Sql.Dapper.Providers.Abstract
{
public abstract class DataProviderBase
{
#region Private Members

private readonly IUnitOfWork _uow;

#endregion


#region Properties

protected IDbConnection Db => _uow.Db;
protected IDbTransaction Transaction => _uow.Transaction;
protected IUnitOfWork Context;

#endregion


#region Constructors

protected DataProviderBase(IUnitOfWork uow)
protected DataProviderBase(IUnitOfWork context)
{
_uow = uow ?? throw new ArgumentNullException(nameof(uow));
Context = context ?? throw new ArgumentNullException(nameof(context));
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public abstract class ReadProviderBase<TRecord> : DataProviderBase

#region Constructors

protected ReadProviderBase(IUnitOfWork uow) : base(uow)
protected ReadProviderBase(IUnitOfWork context) : base(context)
{
}

Expand Down
2 changes: 1 addition & 1 deletion src/YuckQi.Data.Sql.Dapper/Providers/ActivationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class ActivationProvider<TEntity, TKey> : DataProviderBase, IActivationPr

#region Constructors

public ActivationProvider(IUnitOfWork uow, IRevisionProvider<TEntity, TKey> reviser) : base(uow)
public ActivationProvider(IUnitOfWork context, IRevisionProvider<TEntity, TKey> reviser) : base(context)
{
_reviser = reviser ?? throw new ArgumentNullException(nameof(reviser));
}
Expand Down
10 changes: 6 additions & 4 deletions src/YuckQi.Data.Sql.Dapper/Providers/CreationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class CreationProvider<TEntity, TKey, TRecord> : DataProviderBase, ICreat
{
#region Constructors

public CreationProvider(IUnitOfWork uow) : base(uow)
public CreationProvider(IUnitOfWork context) : base(context)
{
}

Expand All @@ -31,10 +31,12 @@ public async Task<TEntity> CreateAsync(TEntity entity)

entity.CreationMomentUtc = DateTime.UtcNow;

if (await Db.InsertAsync(entity.Adapt<TRecord>(), Transaction) > 0)
return entity;
if (! (await Context.Db.InsertAsync(entity.Adapt<TRecord>(), Context.Transaction) > 0))
throw new RecordInsertException<TKey>();

throw new RecordInsertException<TKey>();
Context.SaveChanges();

return entity;
}

#endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class LogicalDeletionProvider<TEntity, TKey> : DataProviderBase, ILogical

#region Constructors

public LogicalDeletionProvider(IUnitOfWork uow, IRevisionProvider<TEntity, TKey> reviser) : base(uow)
public LogicalDeletionProvider(IUnitOfWork context, IRevisionProvider<TEntity, TKey> reviser) : base(context)
{
_reviser = reviser ?? throw new ArgumentNullException(nameof(reviser));
}
Expand Down
10 changes: 6 additions & 4 deletions src/YuckQi.Data.Sql.Dapper/Providers/PhysicalDeletionProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class PhysicalDeletionProvider<TEntity, TKey, TRecord> : DataProviderBase
{
#region Constructors

public PhysicalDeletionProvider(IUnitOfWork uow) : base(uow)
public PhysicalDeletionProvider(IUnitOfWork context) : base(context)
{
}

Expand All @@ -28,10 +28,12 @@ public async Task<TEntity> DeleteAsync(TEntity entity)
if (entity == null)
throw new ArgumentNullException(nameof(entity));

if (await Db.DeleteAsync(entity.Adapt<TRecord>(), Transaction) > 0)
return entity;
if (await Context.Db.DeleteAsync(entity.Adapt<TRecord>(), Context.Transaction) <= 0)
throw new RecordDeleteException<TRecord, TKey>(entity.Key);

throw new RecordDeleteException<TRecord, TKey>(entity.Key);
Context.SaveChanges();

return entity;
}

#endregion
Expand Down
8 changes: 4 additions & 4 deletions src/YuckQi.Data.Sql.Dapper/Providers/RetrievalProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class RetrievalProvider<TEntity, TKey, TRecord> : ReadProviderBase<TRecor
{
#region Constructors

public RetrievalProvider(IUnitOfWork uow) : base(uow)
public RetrievalProvider(IUnitOfWork context) : base(context)
{
}

Expand All @@ -29,7 +29,7 @@ public RetrievalProvider(IUnitOfWork uow) : base(uow)

public async Task<TEntity> GetAsync(TKey key)
{
var record = await Db.GetAsync<TRecord>(key, Transaction);
var record = await Context.Db.GetAsync<TRecord>(key, Context.Transaction);
var entity = record.Adapt<TEntity>();

return entity;
Expand All @@ -41,7 +41,7 @@ public async Task<TEntity> GetAsync(IReadOnlyCollection<IDataParameter> paramete
throw new ArgumentNullException(nameof(parameters));

var sql = BuildSqlForGet(parameters);
var record = await Db.QuerySingleOrDefaultAsync<TRecord>(sql, parameters.ToDynamicParameters(), Transaction);
var record = await Context.Db.QuerySingleOrDefaultAsync<TRecord>(sql, parameters.ToDynamicParameters(), Context.Transaction);
var entity = record.Adapt<TEntity>();

return entity;
Expand All @@ -57,7 +57,7 @@ public Task<TEntity> GetAsync(object parameters)

public async Task<IReadOnlyCollection<TEntity>> GetListAsync(IReadOnlyCollection<IDataParameter> parameters = null)
{
var records = await Db.GetListAsync<TRecord>(parameters?.ToDynamicParameters(), Transaction);
var records = await Context.Db.GetListAsync<TRecord>(parameters?.ToDynamicParameters(), Context.Transaction);
var entities = records.Adapt<IReadOnlyCollection<TEntity>>();

return entities;
Expand Down
10 changes: 6 additions & 4 deletions src/YuckQi.Data.Sql.Dapper/Providers/RevisionProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class RevisionProvider<TEntity, TKey, TRecord> : DataProviderBase, IRevis
{
#region Constructors

public RevisionProvider(IUnitOfWork uow) : base(uow)
public RevisionProvider(IUnitOfWork context) : base(context)
{
}

Expand All @@ -31,10 +31,12 @@ public async Task<TEntity> ReviseAsync(TEntity entity)

entity.RevisionMomentUtc = DateTime.UtcNow;

if (await Db.UpdateAsync(entity.Adapt<TRecord>(), Transaction) > 0)
return entity;
if (await Context.Db.UpdateAsync(entity.Adapt<TRecord>(), Context.Transaction) <= 0)
throw new RecordUpdateException<TRecord, TKey>(entity.Key);

throw new RecordUpdateException<TRecord, TKey>(entity.Key);
Context.SaveChanges();

return entity;
}

#endregion
Expand Down
6 changes: 3 additions & 3 deletions src/YuckQi.Data.Sql.Dapper/Providers/SearchProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class SearchProvider<TEntity, TKey, TRecord> : ReadProviderBase<TRecord>,
{
#region Constructors

public SearchProvider(IUnitOfWork uow) : base(uow)
public SearchProvider(IUnitOfWork context) : base(context)
{
}

Expand All @@ -41,7 +41,7 @@ public async Task<IPage<TEntity>> SearchAsync(IReadOnlyCollection<IDataParameter
throw new ArgumentNullException(nameof(sort));

var sql = BuildSqlForSearch(parameters, page, sort);
var records = await Db.QueryAsync<TRecord>(sql, parameters.ToDynamicParameters(), Transaction);
var records = await Context.Db.QueryAsync<TRecord>(sql, parameters.ToDynamicParameters(), Context.Transaction);
var entities = records.Adapt<IReadOnlyCollection<TEntity>>();
var total = await CountAsync(parameters);

Expand All @@ -64,7 +64,7 @@ private Task<int> CountAsync(IReadOnlyCollection<IDataParameter> parameters)
throw new ArgumentNullException(nameof(parameters));

var sql = BuildSqlForCount(parameters);
var total = Db.ExecuteScalarAsync<int>(sql, parameters.ToDynamicParameters(), Transaction);
var total = Context.Db.ExecuteScalarAsync<int>(sql, parameters.ToDynamicParameters(), Context.Transaction);

return total;
}
Expand Down
2 changes: 1 addition & 1 deletion src/YuckQi.Data.Sql.Dapper/YuckQi.Data.Sql.Dapper.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Kevin J Lambert</Authors>
<Version>0.4.10</Version>
<Version>0.4.11</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Description>An implementation of YuckQi.Data using Dapper and SimpleCRUD.</Description>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Kevin J Lambert</Authors>
<Version>0.4.10</Version>
<Version>0.4.11</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Description>An implementation of YuckQi.Data using Entity Framework.</Description>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/YuckQi.Data/YuckQi.Data.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Kevin J Lambert</Authors>
<Version>0.4.10</Version>
<Version>0.4.11</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<Description>A .NET library providing fine-grained data providers useful in data repository or domain service implementations.</Description>
</PropertyGroup>
Expand Down

0 comments on commit 2c4dd2c

Please sign in to comment.