应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

abp vnext 通用仓储 ef core。WhereIf,多条件,动态条件,分页,动态排序等

9263人阅读 2021/6/18 21:19 总访问:5182559 评论:0 收藏:0 手机
分类: 软件架构

abp vnext 通用仓储 ef core WhereIf,多条件,分页等

  1. public async Task<List<LandInfoDto>> GetListAsync(PaginationDto input)
  2. {
  3. var totalCount = (await _landInfoRepository.GetQueryableAsync())
  4. .WhereIf(!string.IsNullOrEmpty(input.Name), x => x.landName.Contains(input.Name) || x.landName == input.Name)
  5. .WhereIf(!string.IsNullOrEmpty(input.Description), x => x.remark.Contains(input.Description) || x.remark == input.Description)
  6. .Count();
  7. List<LandInfo> landInfos = (await _landInfoRepository.GetQueryableAsync())
  8. .WhereIf(!string.IsNullOrEmpty(input.Name), x => x.landName.Contains(input.Name) || x.landName == input.Name)
  9. .WhereIf(!string.IsNullOrEmpty(input.Description), x => x.remark.Contains(input.Description) || x.remark == input.Description)
  10. .Skip((input.pageNo - 1) * input.pageSize)
  11. .Take(input.pageSize)
  12. .ToList();
  13. //把LandInfo转换成LandInfoDto
  14. List<LandInfoDto> result = ObjectMapper.Map<List<LandInfo>, List<LandInfoDto>>(landInfos);
  15. LandInfo landInfo = new LandInfo();
  16. foreach (LandInfoDto item in result)
  17. {
  18. DealData(item, landInfo);
  19. }
  20. return result;
  21. }

分页也可以用abp vnext里边封装的方法GetPagedListAsync

  1. List<LandInfo> landInfos2 = await _landInfoRepository.GetPagedListAsync((paginationDto.pageNo - 1) * paginationDto.pageSize, paginationDto.pageSize, "Id");

参数其实都一样
下面是方法的定义看名字就知道了

  1. Task<List<TEntity>> GetPagedListAsync(int skipCount, int maxResultCount, string sorting, bool includeDetails = false, CancellationToken cancellationToken = default);

动态排序的话 可以使用System.Linq.Dynamic.Core 这个库

它可以实现IQueryable级别的、基于字符串的动态表达式构建功能,使用方法如下:

  1. var resultSingle = queryable.OrderBy<User>("NumberProperty");
  2. var resultSingleDescending = queryable.OrderBy<User>("NumberProperty DESC");
  3. var resultMultiple = queryable.OrderBy<User>("NumberProperty, StringProperty");

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

EF多种更新方法。EF修改Entity Framework修改。abp vnext ef 更新封装

[TOC] 方法1:直接执行更新的sql语句过于简单不说了 方法2:先查询在更新Users result = oapEntities.Users.Where(a =&gt...

EF添加。Entity Framework添加。abp vnext ef 添加批量添加的封装

EF的添加如下,代码比较添加: ShipEntities se = new ShipEntities(); se.Users.Add(user); se.SaveChanges(); 方法2:...

领域驱动设计DDD abp vnext 一:项目架构搭建模块使用

[TOC]用户接口层改造nuget中下载abp依赖VoLo.Abp.AspNetCore.Mvc ItemGroup添加方式 &lt;ItemGroup&gt; &lt;Packa...

abp vnext ObjectMapper 为空

abp vnext ObjectMapper 报空引用的错。System.NullReferenceException:“Object reference not set to an instance of an ...

领域驱动设计DDD abp vnext 二:使用仓储

[TOC]领域驱动设计仓储介绍在领域层和数据映射层之间进行中介,使用类似集合的接口来操作领域对象.” (Martin Fowler)。 实...

abp vnext 通用仓储操作空引用。abp vnext 仓储报错仓储为空。依赖注入报错

An internal error occurred during your request! abp vnext 通用仓储依赖注入拿到为空,或者能正常拿到依赖注入操作空引...

领域驱动设计DDD abp vnext 三:领域模型 之 失血模型贫血模型充血模型胀血模型

[TOC]领域模型分为:失血模型,贫血模型,充血模型,胀血模型。 一、失血模型传统的三层架构,实体对象就是简单的POJO或者...

abp vnext连接mysql。.net core连接mysql。ef core连接mysql

增加一个MySQL的库:Volo.Abp.EntityFrameworkCore.MySQL &lt;PackageReference Include=&quot;Volo.Abp.EntityFrameworkCo...

abp vnext ef core连接MySql报空引用错连接SqlServer报空引用错。abp vnext 的坑

使用abp vnext 真的太喜欢报空引用的错了。你报点错给一点具体的错不行么,这样搞起让人去猜太坑了,比如前面的auto_fac没...

abp vnext项目结构分析

Domain 项目领域层,领域驱动开发的核心层。 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域...

abp vnext 实体的guid主键

Guid主键的实体如果你的实体Id类型为 Guid,有一些好的实践可以实现: 创建一个构造函数,获取ID作为参数传递给基类.— 如...

abp vnext 获取配置文件

代码如下: public override void ConfigureServices(ServiceConfigurationContext context) { var services = cont...

abp vnext验证

验证DTO微软官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-7.0 数据注...

abp vnext 事务多表查询自定义仓储

[TOC]abp vnext 中的通用仓储主要是封装的单表操作,如果是实现事务的话最好还是封装一个自定义仓储。 自定义仓储大概的结...

abp vnext导航属性级联查询。abp vnext 通用仓储 级联查询不到数据。abp vnext 多表查询join

使用abp vnext的导航属性做级联查询,当然你可以使用自定义仓储,直接用原生的ef来写,也很简单方便abp vnext自定义仓储里...