Sono nuovo di ASP.NET Boilerplate e Dapper. Dal tutorial ho scoperto che ASP.NET Boilerplate funziona con Entity Framework Core. Possiamo usare un altro livello di accesso ai dati anziché EF Core? ASP.NET Boilerplate è compatibile con Dapper?
Sicuro! puoi usare Dapper.
Installazione
Prima di iniziare, devi installare https://www.nuget.org/packages/Abp.Dapper , pacchetti EF Core, EF 6.x o NHibernate ORM NuGet nel progetto che desideri utilizzare.
Registrazione del modulo
Per prima cosa devi aggiungere l'attributo DependsOn per AbpDapperModule sul tuo modulo dove lo registri
[DependsOn(
typeof(AbpEntityFrameworkCoreModule),
typeof(AbpDapperModule)
)]
public class MyModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly());
}
}
Mappatura da entità a tabella
È possibile configurare i mapping. Ad esempio, la classe Person si associa alla tabella Persone nell'esempio seguente:
public class PersonMapper : ClassMapper<Person>
{
public PersonMapper()
{
Table("Persons");
Map(x => x.Roles).Ignore();
AutoMap();
}
}
Modulo di esempio :
[DependsOn(
typeof(AbpEntityFrameworkModule),
typeof(AbpDapperModule)
)]
public class MyModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly());
DapperExtensions.SetMappingAssemblies(new List<Assembly> { typeof(MyModule).GetAssembly() });
}
}
uso
Dopo aver registrato AbpDapperModule, è possibile utilizzare l'interfaccia IDapperRepository generica (anziché IRepository standard) per iniettare repository dapper.
public class SomeApplicationService : ITransientDependency
{
private readonly IDapperRepository<Person> _personDapperRepository;
private readonly IRepository<Person> _personRepository;
public SomeApplicationService(
IRepository<Person> personRepository,
IDapperRepository<Person> personDapperRepository)
{
_personRepository = personRepository;
_personDapperRepository = personDapperRepository;
}
public void DoSomeStuff()
{
var people = _personDapperRepository.Query("select * from Persons");
}
}
Dai un'occhiata a questi link: