Skip to content

Commit 48c6696

Browse files
author
Bart Koelman
committed
Fixed: re-fetch entity after CREATE without relationships
1 parent e15246d commit 48c6696

File tree

4 files changed

+8
-10
lines changed

4 files changed

+8
-10
lines changed

src/JsonApiDotNetCore/Data/DefaultResourceRepository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public virtual IQueryable<TResource> Sort(IQueryable<TResource> entities, SortQu
9494
}
9595

9696
/// <inheritdoc />
97-
public virtual async Task<TResource> CreateAsync(TResource entity)
97+
public virtual async Task CreateAsync(TResource entity)
9898
{
9999
_logger.LogTrace($"Entering {nameof(CreateAsync)}({(entity == null ? "null" : "object")}).");
100100

@@ -113,11 +113,11 @@ public virtual async Task<TResource> CreateAsync(TResource entity)
113113
_dbSet.Add(entity);
114114
await _context.SaveChangesAsync();
115115

116+
FlushFromCache(entity);
117+
116118
// this ensures relationships get reloaded from the database if they have
117119
// been requested. See https://github.com/json-api-dotnet/JsonApiDotNetCore/issues/343
118120
DetachRelationships(entity);
119-
120-
return entity;
121121
}
122122

123123
/// <summary>

src/JsonApiDotNetCore/Data/IResourceWriteRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public interface IResourceWriteRepository<TResource>
1212
public interface IResourceWriteRepository<TResource, in TId>
1313
where TResource : class, IIdentifiable<TId>
1414
{
15-
Task<TResource> CreateAsync(TResource entity);
15+
Task CreateAsync(TResource entity);
1616

1717
Task UpdateAsync(TResource requestEntity, TResource databaseEntity);
1818

src/JsonApiDotNetCore/Services/DefaultResourceService.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,12 @@ public DefaultResourceService(
6262

6363
public virtual async Task<TResource> CreateAsync(TResource entity)
6464
{
65-
_logger.LogTrace($"Entering {nameof(CreateAsync)}({(entity == null ? "null" : "object")}).");
65+
_logger.LogTrace($"Entering {nameof(CreateAsync)}(object).");
6666

6767
entity = IsNull(_hookExecutor) ? entity : _hookExecutor.BeforeCreate(AsList(entity), ResourcePipeline.Post).SingleOrDefault();
68-
entity = await _repository.CreateAsync(entity);
68+
await _repository.CreateAsync(entity);
6969

70-
if (_includeService.Get().Any())
71-
entity = await GetWithRelationshipsAsync(entity.Id);
70+
entity = await GetWithRelationshipsAsync(entity.Id);
7271

7372
if (!IsNull(_hookExecutor, entity))
7473
{

test/JsonApiDotNetCoreExampleTests/Acceptance/TodoItemsControllerTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -542,11 +542,10 @@ public async Task Can_Post_TodoItem()
542542
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
543543
Assert.Equal(todoItem.Description, deserializedBody.Description);
544544
Assert.Equal(todoItem.CreatedDate.ToString("G"), deserializedBody.CreatedDate.ToString("G"));
545-
Assert.Equal(nowOffset.ToString("yyyy-MM-ddTHH:mm:ssK"), deserializedBody.OffsetDate?.ToString("yyyy-MM-ddTHH:mm:ssK"));
545+
Assert.Equal(nowOffset, deserializedBody.OffsetDate);
546546
Assert.Null(deserializedBody.AchievedDate);
547547
}
548548

549-
550549
[Fact]
551550
public async Task Can_Post_TodoItem_With_Different_Owner_And_Assignee()
552551
{

0 commit comments

Comments
 (0)