< Summary

Information
Class: ArturRios.Data.MySql.MySqlProvider
Assembly: ArturRios.Data.MySql
File(s): /home/ci/agent/workspace/dotnet-data-docs_main/app/src/ArturRios.Data.MySql/MySqlProvider.cs
Line coverage
100%
Covered lines: 3
Uncovered lines: 0
Coverable lines: 3
Total lines: 28
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage
100%
Covered methods: 3
Fully covered methods: 3
Total methods: 3
Method coverage: 100%
Full method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
get_Type()100%11100%
Configure(...)100%11100%

File(s)

/home/ci/agent/workspace/dotnet-data-docs_main/app/src/ArturRios.Data.MySql/MySqlProvider.cs

#LineLine coverage
 1using System.Collections.Concurrent;
 2using ArturRios.Data.Relational.Core.Configuration;
 3using ArturRios.Data.Relational.Core.Providers;
 4using Microsoft.EntityFrameworkCore;
 5
 6namespace ArturRios.Data.MySql;
 7
 8/// <summary>
 9/// <see cref="IDatabaseProvider"/> that configures EF Core to use MySQL or MariaDB via
 10/// Microting.EntityFrameworkCore.MySql, a maintained fork of Pomelo.EntityFrameworkCore.MySql.
 11/// The server version is detected from the server the first time a connection string is configured,
 12/// then reused.
 13/// </summary>
 14public class MySqlProvider : IDatabaseProvider
 15{
 16    // Context options are built once per DI scope (per request, in a web app), and detecting the
 17    // server version opens a connection and queries the server. The provider is a singleton, so the
 18    // detected version is kept per connection string: one probe per server instead of one per scope.
 19    // A failed probe is not cached, so the next scope retries it.
 820    private readonly ConcurrentDictionary<string, ServerVersion> _serverVersions = new(StringComparer.Ordinal);
 21
 22    /// <inheritdoc />
 423    public DatabaseType Type => DatabaseType.MySql;
 24
 25    /// <inheritdoc />
 26    public void Configure(DbContextOptionsBuilder builder, string connectionString) =>
 2427        builder.UseMySql(connectionString, _serverVersions.GetOrAdd(connectionString, ServerVersion.AutoDetect));
 28}