Intentando configurar una capa de acceso a datos basada en Dapper. La documentación de ABP.Dapper es confusa e incompleta

aspnetboilerplate dapper

Pregunta

Intento configurar un DAL simple que devuelva una lista de objetos tipeados. Bastante estándar de repositorio de datos. Descargué todo el código de ABP de GitHub, construí los archivos DLL para Abp.Dapper y Abp.EntityFrameworkCore y comencé a seguir las instrucciones en esta página: https://aspnetboilerplate.com/Pages/Documents/Dapper-Integration

Pero ni siquiera puedo pasar el primer paso de esto. Este código no se compila porque no sabe qué es SampleApplicationModule. Pero no hay orientación en estas instrucciones sobre lo que se supone que es.

¿Cómo se supone que debo usar las bibliotecas de Abp? Estoy perdido. ¿Puede alguien decirme la cantidad mínima de cosas que debo hacer para conectar mi base de datos a la biblioteca de Abp y consultar una Lista de objetos tipeados?

Código de la documentación de Abp's Dapper Integration:

[DependsOn(
     typeof(AbpEntityFrameworkCoreModule),
     typeof(AbpDapperModule)
)]
public class MyModule : AbpModule
{
    public override void Initialize()
    {
               IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly());
    }
}

Respuesta popular

si no está seguro de qué escribir para SampleApplicationModule utilice el siguiente código

Registro de módulo

 [DependsOn(
     typeof(AbpEntityFrameworkModule),
     typeof(AbpKernelModule),
     typeof(AbpDapperModule)
 )]
 public class SampleApplicationModule : AbpModule
 {
     public override void Initialize()
     {
         IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
     }
 }

Uso

public class SomeDomainService : ITransientDependency
{
    private readonly IDapperRepository<Animal> _animalDapperRepository;
    private readonly IRepository<Animal> _animalRepository;
    private readonly IDapperRepository<Person> _personDapperRepository;
    private readonly IRepository<Person> _personRepository;
    private readonly IUnitOfWorkManager _unitOfWorkManager;

    public SomeDomainService(
        IUnitOfWorkManager unitOfWorkManager,
        IRepository<Person> personRepository,
        IRepository<Animal> animalRepository,
        IDapperRepository<Person> personDapperRepository,
        IDapperRepository<Animal> animalDapperRepository)
    {
        _unitOfWorkManager = unitOfWorkManager;
        _personRepository = personRepository;
        _animalRepository = animalRepository;
        _personDapperRepository = personDapperRepository;
        _animalDapperRepository = animalDapperRepository;
    }

    public void DoSomeStuff()
    {
        using (IUnitOfWorkCompleteHandle uow = _unitOfWorkManager.Begin())
        {
            _personRepository.Insert(new Person("OÄŸuzhan"));
            _personRepository.Insert(new Person("Bread"));

            _animalRepository.Insert(new Animal("Bird"));
            _animalRepository.Insert(new Animal("Cat"));

            _unitOfWorkManager.Current.SaveChanges();

            Animal animal = _animalRepository.FirstOrDefault(x => x.Name == "Bird");

            Person person = _personDapperRepository.Get(1);
            int personCount = _personDapperRepository.Count(x => x.Name == "OÄŸuzhan");
            List<Animal> persons = _animalDapperRepository.GetList(x => x.Name.StartsWith("O")).ToList();

            uow.Complete();
        }
    }
}

Consulte la publicación relacionada para AbpDapper https://github.com/aspnetboilerplate/aspnetboilerplate/pull/1854#issuecomment-284511423

PD: la comunidad implementa la integración de Abp.Dapper.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué