< Summary

Information
Class: ArturRios.Data.Relational.Core.Configuration.BaseDbContext
Assembly: ArturRios.Data.Relational.Core
File(s): D:\Repositories\dotnet-data\src\ArturRios.Data.Relational.Core\Configuration\BaseDbContext.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 37
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage
100%
Covered methods: 4
Fully covered methods: 2
Total methods: 4
Method coverage: 100%
Full method coverage: 50%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
SaveChanges()100%11100%
SaveChangesAsync(...)100%11100%
BumpConcurrencyStamps()100%22100%

File(s)

D:\Repositories\dotnet-data\src\ArturRios.Data.Relational.Core\Configuration\BaseDbContext.cs

#LineLine coverage
 1using ArturRios.Data.Relational.Core.Entities;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace ArturRios.Data.Relational.Core.Configuration;
 5
 6/// <summary>
 7///     Base <see cref="DbContext" /> that applies shared conventions and refreshes the
 8///     optimistic-concurrency stamp of modified <see cref="VersionedEntity" /> instances on save.
 9/// </summary>
 10/// <param name="options">The context options supplied by the configured provider.</param>
 3711public abstract class BaseDbContext(DbContextOptions options) : DbContext(options)
 12{
 13    /// <inheritdoc />
 14    public override int SaveChanges()
 2715    {
 2716        BumpConcurrencyStamps();
 17
 2718        return base.SaveChanges();
 2619    }
 20
 21    /// <inheritdoc />
 22    public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
 1023    {
 1024        BumpConcurrencyStamps();
 25
 1026        return base.SaveChangesAsync(cancellationToken);
 1027    }
 28
 29    private void BumpConcurrencyStamps()
 3730    {
 11731        foreach (var entry in ChangeTracker.Entries<VersionedEntity>()
 4432                     .Where(e => e.State == EntityState.Modified))
 333        {
 334            entry.Entity.ConcurrencyStamp = Guid.NewGuid();
 335        }
 3736    }
 37}