« Dapper » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications
Ligne 41 : Ligne 41 :
     IDbConnection CreateConnection();
     IDbConnection CreateConnection();
}
}
</filebox>
<filebox fn='Repositories/ItemRepository.cs'>
using var dbConnection = dbConnectionFactory.CreateConnection();
var sql = """
    select * from item
""");
var items = await dbConnection.QueryAsync<Item>(sql);
</filebox>
</filebox>

Version du 13 août 2023 à 15:04

Links

Description

Dapper is ideal for scenarios where performance is critical and developers want fine-grained control over the database operations.
Dapper is also easy to learn and use comparing to EF.

Nuget packages

Bash.svg
dotnet add package Dapper

dotnet add package MySQLConnection  # for MySqlConnection

Dependency Injection

Program.cs
var connectionString = builder.Configuration.GetConnectionString("MyDatabase");
builder.Services.AddSingleton<IDbConnectionFactory, MySqlConnectionFactory>(
    _ => new MySqlConnectionFactory(connectionString));
DataAccess/MySqlConnectionFactory.cs
public class MySqlConnectionFactory : IDbConnectionFactory
{
    private readonly string connectionString;

    public MySqlConnectionFactory(string connectionString)
    {
        this.connectionString = connectionString;
    }

    public IDbConnection CreateConnection() => new MySqlConnection(connectionString);
}
DataAccess/IDbConnectionFactory.cs
public interface IDbConnectionFactory
{
    IDbConnection CreateConnection();
}
Repositories/ItemRepository.cs
using var dbConnection = dbConnectionFactory.CreateConnection();

var sql = """
    select * from item
""");
var items = await dbConnection.QueryAsync<Item>(sql);