abp集成abp.Dapper


首先看下官網的介紹:

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使用了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM