Versão
Idioma

Dapper Integration

Dapper is a light-weight and simple database provider. The major benefit of using Dapper is writing T-SQL queries. It provides some extension methods for IDbConnection interface.

ABP does not encapsulate many functions for Dapper. ABP Dapper library provides a DapperRepository<TDbContext> base class based on ABP EntityFrameworkCore module, which provides the IDbConnection and IDbTransaction properties required by Dapper.

IDbConnection and IDbTransaction works well with the ABP Unit-Of-Work.

Installation

Install and configure EF Core according to EF Core's integrated documentation.

Volo.Abp.Dapper is the main nuget package for the Dapper integration.

You can find it on NuGet Gallery: https://www.nuget.org/packages/Volo.Abp.Dapper

Install it to your project (for a layered application, to your data/infrastructure layer):

Install-Package Volo.Abp.Dapper

Then add AbpDapperModule module dependency (with DependsOn attribute) to your module:

using Volo.Abp.Dapper;
using Volo.Abp.Modularity;

namespace MyCompany.MyProject
{
    [DependsOn(typeof(AbpDapperModule))]
    public class MyModule : AbpModule
    {
        //...
    }
}

Implement Dapper Repository

The following code creates the PersonRepository, which requires EF Core's DbContext (MyAppDbContext). You can inject PersonDapperRepository to your services for your database operations.

DbConnection and DbTransaction comes from the DapperRepository base class.

public class PersonDapperRepository : DapperRepository<MyAppDbContext>, ITransientDependency
{
    public PersonDapperRepository(IDbContextProvider<MyAppDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }

    public virtual async Task<List<string>> GetAllPersonNames()
    {
        return (await DbConnection.QueryAsync<string>("select Name from People", transaction: DbTransaction))
            .ToList();
    }

    public virtual async Task<int> UpdatePersonNames(string name)
    {
        return await DbConnection.ExecuteAsync("update People set Name = @NewName", new { NewName = name },
            DbTransaction);
    }
}
Esta página foi útil?
Por favor, faça uma seleção.
Obrigado pelo seu valioso feedback!

Observe que, embora não possamos responder aos comentários, nossa equipe usará seus comentários para melhorar a experiência.

Neste documento
Mastering ABP Framework Book
Dominando a estrutura ABP

Este livro o ajudará a obter uma compreensão completa da estrutura e das técnicas modernas de desenvolvimento de aplicativos da web.