« Dapper » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
* [https://github.com/cornflourblue/dotnet-7-dapper-mysql-crud-api dotnet-7-dapper-mysql-crud-api]
* [https://github.com/cornflourblue/dotnet-7-dapper-mysql-crud-api dotnet-7-dapper-mysql-crud-api]
* [https://dapper-plus.net Dapper Plus]
* [https://dapper-plus.net Dapper Plus]
* [https://tacta.io/en/news/generic-repository-pattern-using-dapper/20 Generic repository pattern using Dapper]
* [https://github.com/moraleslarios/MoralesLarios.Data Generic Repository based in Dapper]


= [https://www.c-sharpcorner.com/article/dapper-vs-entity-framework-core-vs-ado-net-which-one-should-you-choose/ Description] =
= [https://www.c-sharpcorner.com/article/dapper-vs-entity-framework-core-vs-ado-net-which-one-should-you-choose/ Description] =
Dapper is ideal for scenarios where performance is critical and developers want fine-grained control over the database operations.<br>
Dapper is ideal for scenarios where performance is critical and developers want fine-grained control over the database operations.<br>
Dapper is also easy to learn and use comparing to EF.
Dapper is also easy to learn and use comparing to EF.
{{warn | No code factorization with Dapper like generic repository unless you create your own SQL generator.}}


= Nuget packages =
= Nuget packages =
Ligne 41 : Ligne 44 :
     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>

Dernière version du 13 août 2023 à 15:08

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.

No code factorization with Dapper like generic repository unless you create your own SQL generator.

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);