abp+dapper+mysql_基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查

上一篇文章(https://www.cnblogs.com/meowv/p/12913676.html)我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的封装。本篇说一下自定义仓储的实现方式,其实在abp框架中已经默认给我们实现了默认的通用(泛型)仓储,IRepository,有着标准的CRUD操作,可以看:https://docs.abp.io/zh...
摘要由CSDN通过智能技术生成

上一篇文章(https://www.cnblogs.com/meowv/p/12913676.html)我们用Code-First的方式创建了博客所需的实体类,生成了数据库表,完成了对EF Core的封装。

本篇说一下自定义仓储的实现方式,其实在abp框架中已经默认给我们实现了默认的通用(泛型)仓储,IRepository,有着标准的CRUD操作,可以看:https://docs.abp.io/zh-Hans/abp/latest/Repositories 学习更多。

之所以实现自定义仓储,是因为abp没有给我们实现批量插入、更新的方法,这个是需要自己去扩展的。

既然是自定义仓储,那么就有了很高的自由度,我们可以任意发挥,可以接入第三方批量处理数据的库,可以接入Dapper操作等等,在这里贴一下微软官方推荐的一些EF Core的工具和扩展:https://docs.microsoft.com/zh-cn/ef/core/extensions/ 。

自定义仓储

在.Domain领域层中创建仓储接口,IPostRepository、ICategoryRepository、ITagRepository、IPostTagRepository、IFriendLinkRepository,这里直接全部继承 IRepository 以使用已有的通用仓储功能。

可以转到IRepository接口定义看一下

cbbe589c9888aa8a40065069019d5f22.png

看看abp对于仓储的介绍,如下:

IRepository 接口扩展了标准 IQueryable 你可以使用标准LINQ方法自由查询。但是,某些ORM提供程序或数据库系统可能不支持IQueryable接口。

ABP提供了 IBasicRepository 和 IBasicRepository 接口来支持这样的场景。

你可以扩展这些接口(并可选择性地从BasicRepositoryBase派生)为你的实体创建自定义存储库。

依赖于 IBasicRepository 而不是依赖 IRepository 有一个优点, 即使它们不支持 IQueryable 也可以使用所有的数据源, 但主要的供应商, 像 Entity Framework, NHibernate 或 MongoDb 已经支持了 IQueryable。

因此, 使用 IRepository 是典型应用程序的 建议方法。但是可重用的模块开发人员可能会考虑使用 IBasicRepository 来支持广泛的数据源。

对于想要使用只读仓储提供了IReadOnlyRepository 与 IReadOnlyBasicRepository接口。

仓储接口类如下:

//IPostRepository.cs

using Volo.Abp.Domain.Repositories;

namespace Meowv.Blog.Domain.Blog.Repositories

{

///

/// IPostRepository

///

public interface IPostRepository : IRepository

{

}

}

//ICategoryRepository.cs

using Volo.Abp.Domain.Repositories;

namespace Meowv.Blog.Domain.Blog.Repositories

{

///

/// ICategoryRepository

///

public interface ICategoryRepository : IRepository

{

}

}

//ITagRepository.cs

using System.Collections.Generic;

using System.Threading.Tasks;

using Volo.Abp.Domain.Repositories;

namespace Meowv.Blog.Domain.Blog.Repositories

{

///

/// ITagRepository

///

public interface ITagRepository : IRepository

{

///

/// 批量插入

///

///

///

Task BulkInsertAsync(IEnumerable tags);

}

}

//IPostTagRepository.cs

using System.Collections.Generic;

using System.Threading.Tasks;

using Volo.Abp.Domain.Repositories;

namespace Meowv.Blog.Domain.Blog.Repositories

{

///

/// IPostTagRepository

///

public interface IPostTagRepository : IRepository

{

///

/// 批量插入

///

///

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值