using System.Data.Common; namespace Infrastructure.Sql; /// /// Base class for ADO.NET-based repositories, providing shared connection creation and /// entity-mapping infrastructure for derived repository implementations. /// public abstract class Repository(ISqlConnectionFactory connectionFactory) where T : class { /// /// Creates and opens a new database connection using the configured . /// /// Thrown when the connection cannot be opened. protected async Task CreateConnection() { DbConnection connection = connectionFactory.CreateConnection(); await connection.OpenAsync(); return connection; } /// /// Maps the current row of a data reader to an instance of . /// protected abstract T MapToEntity(DbDataReader reader); }