Skip to content
This repository was archived by the owner on Apr 20, 2024. It is now read-only.

Commit 6c45091

Browse files
author
Morten Turn Pedersen
committed
Changed interface implementation from IDisposable to IAsyncDisposable
1 parent 1f54858 commit 6c45091

File tree

4 files changed

+25
-34
lines changed

4 files changed

+25
-34
lines changed

NetCoreEntityFramework.Tests/EntityRepositoryTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public async Task AddAddsEntityAndSetsAttributes()
7070
int expectedSize = startSize + 1;
7171
var entity = new TestEntity();
7272

73-
using(_repository)
73+
await using(_repository)
7474
{
7575
await _repository.Add(entity);
7676
}
@@ -91,7 +91,7 @@ public async Task AddEntityWithIdKeepsId()
9191
Id = id
9292
};
9393

94-
using (_repository)
94+
await using (_repository)
9595
{
9696
await _repository.Add(entity);
9797
}
@@ -264,7 +264,7 @@ public async Task UpdateUpdatesUpdated(string propertyValue)
264264
DateTime oldCreated = _entity.Created;
265265
_entity.Property = propertyValue;
266266

267-
using(_repository)
267+
await using(_repository)
268268
{
269269
await _repository.Update(_entity);
270270
}
@@ -288,7 +288,7 @@ public void UpdateThrowsExceptionIfNull()
288288
public async Task DeleteSoftDeletesAndSetsDeletedAt()
289289
{
290290
bool success;
291-
using(_repository)
291+
await using(_repository)
292292
{
293293
success = await _repository.Delete(_entity);
294294
}
@@ -310,7 +310,7 @@ public async Task DeleteWithValidIdDeletesAndSetsDeletedAt()
310310
{
311311
bool success;
312312
Guid id = (Guid)_entity.Id;
313-
using (_repository)
313+
await using (_repository)
314314
{
315315
success = await _repository.Delete(id);
316316
}
@@ -327,7 +327,7 @@ public async Task DeleteWithInvalidIdReturnsFalse(Guid randomId)
327327
{
328328
bool success;
329329

330-
using(_repository)
330+
await using(_repository)
331331
{
332332
success = await _repository.Delete(randomId);
333333
}
@@ -348,7 +348,7 @@ public async Task RestoreSetsDeletedFalse()
348348
{
349349
bool success;
350350

351-
using(_repository)
351+
await using(_repository)
352352
{
353353
success = await _repository.Restore(_deletedEntity);
354354
}
@@ -371,7 +371,7 @@ public async Task RestoreOnIdSetsDeletedFalse()
371371
bool success;
372372
Guid id = (Guid)_deletedEntity.Id;
373373

374-
using (_repository)
374+
await using (_repository)
375375
{
376376
success = await _repository.Restore(id);
377377
}
@@ -388,7 +388,7 @@ public async Task RestoreOnInvalidIdReturnsFalse(Guid randomId)
388388
{
389389
bool success;
390390

391-
using(_repository)
391+
await using(_repository)
392392
{
393393
success = await _repository.Restore(randomId);
394394
}

NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Nodes.NetCore.EntityFramework.Tests.Mocks
44
{
5-
public class TestEntityRepository : EntityRepository<TestEntity, TestContext>
5+
public class TestEntityRepository : EntityRepository<TestEntity>
66
{
77
public TestEntityRepository(TestContext context) : base(context, context.Table)
88
{

NetCoreEntityFramework/Repositories/EntityRepository.cs

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010

1111
namespace Nodes.NetCore.EntityFramework.Repositories
1212
{
13-
public abstract class EntityRepository<TEntity, TContext> : IEntityRepository<TEntity, TContext> where TEntity : EntityBase where TContext : DbContext
13+
public abstract class EntityRepository<TEntity> : IEntityRepository<TEntity> where TEntity : EntityBase
1414
{
1515
protected DbSet<TEntity> Table { get; private set; }
16-
private TContext Context { get; set; }
16+
private DbContext Context { get; set; }
1717

18-
protected EntityRepository(TContext context, DbSet<TEntity> table)
18+
protected EntityRepository(DbContext context, DbSet<TEntity> table)
1919
{
2020
Context = context;
2121
Table = table;
@@ -143,33 +143,19 @@ public virtual Task<bool> Restore(TEntity entity)
143143
return Task.FromResult(true);
144144
}
145145

146-
public void Dispose()
147-
{
148-
Context.SaveChanges();
149-
}
150-
151146
private IQueryable<TEntity> GetQueryable(
152147
Expression<Func<TEntity, bool>> where = null,
153148
Expression<Func<TEntity, object>> orderByExpression = null,
154149
OrderBy orderBy = OrderBy.Ascending,
155150
GetListMode mode = GetListMode.ExcludeDeleted)
156151
{
157-
IQueryable<TEntity> query;
158-
159-
switch (mode)
152+
IQueryable<TEntity> query = mode switch
160153
{
161-
case GetListMode.ExcludeDeleted:
162-
query = Table.Where(e => !e.Deleted);
163-
break;
164-
case GetListMode.IncludeDeleted:
165-
query = Table;
166-
break;
167-
case GetListMode.OnlyDeleted:
168-
query = Table.Where(e => e.Deleted);
169-
break;
170-
default:
171-
throw new ArgumentException("Unknown setting", nameof(mode));
172-
}
154+
GetListMode.ExcludeDeleted => Table.Where(e => !e.Deleted),
155+
GetListMode.IncludeDeleted => Table,
156+
GetListMode.OnlyDeleted => Table.Where(e => e.Deleted),
157+
_ => throw new ArgumentException("Unknown setting", nameof(mode)),
158+
};
173159

174160
if (where != null)
175161
query = query.Where(where);
@@ -183,5 +169,10 @@ private IQueryable<TEntity> GetQueryable(
183169

184170
return query;
185171
}
172+
173+
public async ValueTask DisposeAsync()
174+
{
175+
await Context.SaveChangesAsync();
176+
}
186177
}
187178
}

NetCoreEntityFramework/Repositories/IEntityRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace Nodes.NetCore.EntityFramework.Repositories
1111
{
12-
public interface IEntityRepository<TEntity, TContext> : IDisposable where TEntity : EntityBase where TContext : DbContext
12+
public interface IEntityRepository<TEntity> : IAsyncDisposable where TEntity : EntityBase
1313
{
1414
/// <summary>
1515
/// Get the entity with the given <paramref name="id"/>.

0 commit comments

Comments
 (0)