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

Commit 0977d25

Browse files
author
Morten Turn Pedersen
authored
Merge pull request #33 from nodes-dotnet/develop
Production publish
2 parents c2f17a4 + ec57381 commit 0977d25

File tree

5 files changed

+19
-16
lines changed

5 files changed

+19
-16
lines changed

NetCoreEntityFramework.Tests/Mocks/TestEntityRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace Nodes.NetCore.EntityFramework.Tests.Mocks
44
{
55
public class TestEntityRepository : EntityRepository<TestEntity>
66
{
7-
public TestEntityRepository(TestContext context) : base(context, context.Table)
7+
public TestEntityRepository(TestContext context) : base(context)
88
{
99
}
1010
}

NetCoreEntityFramework.Tests/Mocks/TestSoftDeleteEntityRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace Nodes.NetCore.EntityFramework.Tests.Mocks
44
{
55
public class TestSoftDeleteEntityRepository : EntitySoftDeleteRepository<TestSoftDeleteEntity>
66
{
7-
public TestSoftDeleteEntityRepository(TestContext context) : base(context, context.SoftDeleteTable)
7+
public TestSoftDeleteEntityRepository(TestContext context) : base(context)
88
{
99
}
1010
}

NetCoreEntityFramework/NetCoreEntityFramework.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netstandard2.1</TargetFramework>
55
<PackageId>Nodes.NetCore.EntityFramework.Helpers</PackageId>
6-
<Version>2.0.0</Version>
6+
<Version>2.1.0</Version>
77
<Authors>Nodes</Authors>
88
<Company>Nodes</Company>
99
<Product>.NET Core Entity Framework Helpers</Product>

NetCoreEntityFramework/Repositories/EntityRepository.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ namespace Nodes.NetCore.EntityFramework.Repositories
1212
{
1313
public abstract class EntityRepository<TEntity> : IEntityRepository<TEntity> where TEntity : EntityBase
1414
{
15-
protected DbSet<TEntity> Table { get; private set; }
16-
private DbContext Context { get; set; }
15+
protected DbContext Context { get; }
1716

18-
protected EntityRepository(DbContext context, DbSet<TEntity> table)
17+
protected EntityRepository(DbContext context)
1918
{
2019
Context = context;
21-
Table = table;
2220
}
2321

24-
public virtual Task<TEntity> Get(Guid id) => Table.FirstOrDefaultAsync(entity => entity.Id == id);
22+
public virtual Task<TEntity> Get(Guid id) => BaseIncludes().FirstOrDefaultAsync(entity => entity.Id == id);
2523

2624
public async virtual Task<IEnumerable<TEntity>> GetList(
2725
[Range(1, int.MaxValue)] int page,
@@ -86,7 +84,7 @@ public virtual Task Add(TEntity entity)
8684
entity.Created = now;
8785
entity.Updated = now;
8886

89-
Table.Add(entity);
87+
Context.Set<TEntity>().Add(entity);
9088

9189
return Task.CompletedTask;
9290
}
@@ -98,7 +96,7 @@ public virtual Task Update(TEntity entity)
9896

9997
entity.Updated = DateTime.UtcNow;
10098

101-
Table.Update(entity);
99+
Context.Set<TEntity>().Update(entity);
102100

103101
return Task.CompletedTask;
104102
}
@@ -108,7 +106,7 @@ public virtual Task<bool> Delete(TEntity entity)
108106
if (entity == null)
109107
throw new ArgumentNullException(nameof(entity));
110108

111-
Table.Remove(entity);
109+
Context.Set<TEntity>().Remove(entity);
112110

113111
return Task.FromResult(true);
114112
}
@@ -126,6 +124,11 @@ public virtual async Task<bool> Delete(Guid id)
126124
return await Delete(entity);
127125
}
128126

127+
/// <summary>
128+
/// Override this function to automatically include references in the result
129+
/// </summary>
130+
protected virtual IQueryable<TEntity> BaseIncludes() => Context.Set<TEntity>();
131+
129132
protected IQueryable<TEntity> Paginate(IQueryable<TEntity> query, [Range(1, int.MaxValue)] int page, [Range(1, int.MaxValue)] int pageSize)
130133
{
131134
if (page < 1)
@@ -147,7 +150,7 @@ protected IQueryable<TEntity> GetQueryable(
147150
Expression<Func<TEntity, object>> orderByExpression = null,
148151
OrderBy orderBy = OrderBy.Ascending)
149152
{
150-
IQueryable<TEntity> query = Table;
153+
IQueryable<TEntity> query = BaseIncludes();
151154

152155
if (where != null)
153156
query = query.Where(where);

NetCoreEntityFramework/Repositories/EntitySoftDeleteRepository.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ namespace Nodes.NetCore.EntityFramework.Repositories
1212
{
1313
public abstract class EntitySoftDeleteRepository<TEntity> : EntityRepository<TEntity>, IEntitySoftDeleteRepository<TEntity> where TEntity : EntitySoftDeleteBase
1414
{
15-
protected EntitySoftDeleteRepository(DbContext context, DbSet<TEntity> table) : base(context, table)
15+
protected EntitySoftDeleteRepository(DbContext context) : base(context)
1616
{
1717
}
1818

19-
public virtual Task<TEntity> Get(Guid id, bool includeDeleted = false) => Table.FirstOrDefaultAsync(entity => (includeDeleted || !entity.Deleted) && entity.Id == id);
19+
public virtual Task<TEntity> Get(Guid id, bool includeDeleted = false) => BaseIncludes().FirstOrDefaultAsync(entity => (includeDeleted || !entity.Deleted) && entity.Id == id);
2020

2121
public async virtual Task<IEnumerable<TEntity>> GetList(
2222
[Range(1, int.MaxValue)] int page,
@@ -78,7 +78,7 @@ public override Task<bool> Delete(TEntity entity)
7878
entity.DeletedAt = DateTime.UtcNow;
7979
entity.Deleted = true;
8080

81-
Table.Update(entity);
81+
Context.Set<TEntity>().Update(entity);
8282

8383
return Task.FromResult(true);
8484
}
@@ -104,7 +104,7 @@ public virtual Task<bool> Restore(TEntity entity)
104104
entity.Deleted = false;
105105
entity.DeletedAt = null;
106106

107-
Table.Update(entity);
107+
Context.Set<TEntity>().Update(entity);
108108

109109
return Task.FromResult(true);
110110
}

0 commit comments

Comments
 (0)