首先看下官網的介紹:
https://aspnetboilerplate.com/Pages/Documents/Dapper-Integration
中文翻譯:
介紹
Dapper是.NET的對象關系映射器(ORM)。該Abp.Dapper包裝簡單集成到精致小巧ASP.NET樣板。它與EF 6.x,EF Core或NHibernate一起作為輔助ORM提供程序。
安裝
在開始之前,您需要將 Abp.Dapper和EF Core,EF 6.x或NHibernate ORM NuGet包安裝到您要使用的項目中。
模塊注冊
首先,您需要在模塊上為AbpDapperModule添加DependsOn屬性:
[DependsOn( typeof(AbpEntityFrameworkCoreModule), typeof(AbpDapperModule) )] public class MyModule : AbpModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(typeof(SampleApplicationModule).GetAssembly()); } }
請注意,應該在EF Core依賴項之后添加AbpDapperModule依賴項。
表映射的實體
您可以配置映射。例如,Person類映射到以下示例中的 Persons表:
public class PersonMapper : ClassMapper<Person> { public PersonMapper() { Table("Persons"); Map(x => x.Roles).Ignore(); AutoMap(); } }
您應該設置包含映射器類的程序集。例:
[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() }); } }
用法
注冊AbpDapperModule后,您可以使用Generic IDapperRepository接口(而不是標准IRepository)來注入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"); } }
您可以在同一個事務中同時使用EF和Dapper存儲庫!
官網上說的有點模糊,這里整理下
1、在application和efcore層添加nuget包Abp.Dapper


2、在EntityFrameworkCore層的EntityFrameworkCore->**EntityFrameworkModule類中添加以下代碼,對應官網文檔的【模塊注冊】

3、設置包含映射器類的程序集

DapperExtensions.DapperExtensions.SetMappingAssemblies(new List<Assembly> { typeof(WisdomCloudEntityFrameworkModule).GetAssembly() });
如果是mysql,必須添加下面這句
//使用mysql必須修改,默認是sqlserver DapperExtensions.DapperExtensions.SqlDialect = new MySqlDialect();
4、EntityFrameworkCore添加下面文件夾來添加映射關系,對應官網文檔【表映射的實體】

5、在application層就可以通過IDapperRepository使用了

