abp+dapper+mysql_ABP架构学习系列四:集成Dapper

本文介绍了如何将Dapper集成到ABP框架中,包括注册Module、配置实体映射以及在应用层和仓储层的使用方法。通过示例展示了DapperRepository的封装过程,帮助开发者理解并实现在ABP项目中结合Dapper进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前,一直想集成Dapper到项目中,但是一直没成功,今天把abp升级到最新版,然后按教程来,就可以了,呵呵

现在,基于上一篇的源码进行升级和集成dapper,将abp升级到3.8.2

官方升级文档:https://github.com/ABPFrameWorkGroup/AbpDocument2Chinese/blob/master/Markdown/Abp/9.5ABP%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%E5%B1%82-%E9%9B%86%E6%88%90Dapper.md

一、注册Module

首先,你要在Module类上添加 DependsOn 特性,并且使用 AbpDapperModule 作为传入参数。依赖关系的先后顺序 AbpDapperModule 依赖应该在 EF Core依赖之后。

修改ZmBlog.Infrastructure的ZmBlogDataModule 如下:

namespaceZmBlog.EntityFramework

{

[DependsOn(typeof(ZmBlogCoreModule), typeof(AbpEntityFrameworkModule), typeof(AbpDapperModule))]public classZmBlogDataModule : AbpModule

{public override voidPreInitialize()

{

Database.SetInitializer(new CreateDatabaseIfNotExists());

Configuration.DefaultNameOrConnectionString= "DefaultConnection";

}public override voidInitialize()

{

IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());

DapperExtensions.DapperExtensions.SetMappingAssemblies(new List { typeof(ZmBlogDataModule).GetAssembly() });

}

}

}

二、配置实体与表的映射

和ef一样,需要配置映射关系

public class PersonMapper : ClassMapper{publicPersonMapper()

{

Table("Categories");

AutoMap();

}

}

PS: 如果同时使用ef,它的映射最好使用ToTable指定表名,不然ef会自动转换最后一个单词为复数

三、使用

1.在应用层使用

private readonly IRepository_categoryRepository;private readonly IDapperRepository_categoryDapperRepository;private readonlyICategoryDapperRepository _categoryDapperRepo;public CategoryApp(IRepository categoryRepository, IDapperRepositorycategoryDapperRepository, ICategoryDapperRepository categoryDapperRepository2)

{

_categoryRepository=categoryRepository;

_categoryDapperRepository=categoryDapperRepository;

_categoryDapperRepo=categoryDapperRepository2;

}

2.DapperRepository的封装

封装的仓储基类

namespaceZmBlog.EntityFramework.EntityFramework.DapperRepositories

{public abstract class DapperRepository : DapperEfRepositoryBase where TEntity : class, IEntity{public DapperRepository(IActiveTransactionProvider activeTransactionProvider) : base(activeTransactionProvider)

{

}

}public abstract class DapperRepository : DapperEfRepositoryBase where TEntity : class, IEntity{public DapperRepository(IActiveTransactionProvider activeTransactionProvider) : base(activeTransactionProvider)

{

}

}

}

定义仓储接口和实现

//领域层

public interface ICategoryDapperRepository : IDapperRepository{

}//基础设施层

public class CategoryDapperRepository : DapperRepository, ICategoryDapperRepository

{public CategoryDapperRepository(IActiveTransactionProvider activeTransactionProvider) : base(activeTransactionProvider)

{

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值