.net core ef 连表查询

2024-05-01 09:44
文章标签 查询 core net ef 连表

本文主要是介绍.net core ef 连表查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Information和TypeInfo连表查询

类似:

select st.Title1,si.* from [Star_Information] si left join Star_TypeInfo st on si.typeId2=st.id

先在EfCoreDbContext.cs配置

  protected override void OnModelCreating(ModelBuilder builder){base.OnModelCreating(builder);//TypeInfo 连表查询配置builder.Entity<Information>().HasOne(si => si.TypeInfo).WithMany().HasForeignKey(si => si.TypeId2);// 跟TypeInfo表相关联的TypeId2}

在Information.cs实体类新增 public TypeInfo TypeInfo { get; set; } // 导航属性 

 

接口实现

  /// <summary>/// 获取信息列表/// </summary>/// <param name="channel">调用参数</param>/// <param name="pageSize">每页记录数。必须大于等于1</param>/// <param name="pageIndex">页码。首页从1开始,页码必须大于等于1</param>/// <param name="typeIds">分类Id集</param>/// <param name="typeInfoIds">多选分类Id集</param>/// <param name="auditIds">审核Id集</param>/// <param name="keywords">搜索关键词</param>/// <returns></returns>[HttpGet][Authorize("Manage_View")]public async Task<MessageDto> List(string channel, int pageSize, int pageIndex, string typeIds = "", string typeInfoIds = "", string auditIds = "", string keywords = ""){var parameter = (InformationParameter)await _adminMenuService.GetParameter(channel, new InformationParameter());if (parameter.Channel == ""){return new MessageDto { Message = "信息不存在" };}var where = PredicateBuilder.True<Information>();where = where.And(w => w.Channel == parameter.Channel && w.WebSiteId == _authorityModel.WebSite.Id);if (!string.IsNullOrEmpty(typeIds)){var lastPathId = typeIds.Split(',').LastOrDefault();where = where.And(w => w.TypeIdPath.Contains(lastPathId));}if (!string.IsNullOrEmpty(typeInfoIds)){var lastPathId = typeInfoIds.Split(',').LastOrDefault();where = where.And(w => w.TypeIdStrPath.Contains(lastPathId));}if (!string.IsNullOrEmpty(auditIds) && StringHelper.IsNumber(auditIds.Split(',').LastOrDefault())){var lastPathId = long.Parse(auditIds.Split(',').LastOrDefault());where = where.And(w => w.AuditStatus == lastPathId);}if (!string.IsNullOrEmpty(keywords)){//连表查询TypeInfo的标题where = where.And(w => w.TypeInfo.Title1.Contains(keywords));}//联表查询var infoList = await _informationService.GetListAsync(pageSize, pageIndex, where, order => order.OrderByDescending(o => o.IsTop).ThenBy(o => o.Sort.Length).ThenBy(o => o.Sort).ThenByDescending(o => o.ReleaseDate));//联表查询 这个可以直接查出已经关联的人才表//var infoList = await _informationService.GetListAsync(pageSize, pageIndex, where,//    order => order.OrderByDescending(o => o.IsTop).ThenBy(o => o.Sort.Length).ThenBy(o => o.Sort).ThenByDescending(o => o.ReleaseDate)//    , info => info.Include(i => i.TypeInfo));var totleCount = await _informationService.CountAsync(where);var listData = _mapper.Map<List<Information>, List<InformationDto>>(infoList);var typeInfoList = await _typeInfoService.GetListAsync(0, w => w.Channel == parameter.TypeChannel && w.WebSiteId == _authorityModel.WebSite.Id, order => order.OrderBy(o => o.Sort));foreach (var item in listData){//如果有关联简介的idif (item.TypeId2!=0){var typeInfo = await _typeInfoService.GetAsync(item.TypeId2);if (typeInfo!=null){                     item.Type2Name= typeInfo.Title1;item.Type2Img = typeInfo.PicURL1;}}if (!string.IsNullOrEmpty(item.TypeIdPath)){item.TypeIdPathName = new List<string>();var itemTypeList = typeInfoList.Where(w => item.TypeIdPath.Contains(w.Id.ToString()));foreach (var type in itemTypeList){item.TypeIdPathName.Add(type.Title1);if (item.Channel == "ScientificResearchPlatform"){string[] attrid = item.TypeIdPath.Split(',');if (type.DisplayMode == 0){if (item.TypeIdPath != ""){if (attrid.Length > 1){ item.Url = "http://103.236.254.221:20002/#/Platform/" + attrid[0] + "/" + attrid[1] + "/0/1";}}}else if (type.DisplayMode == 1){item.Url = "http://103.236.254.221:20002/#/NewsInfo/ScientificResearchPlatform/" + item.Id + "/" + attrid[0] + "";}else if (type.DisplayMode == 2){item.Url = "";}}}}}return new MessageDto { Success = true, Data = new { listData, totleCount } };}

这篇关于.net core ef 连表查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951360

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

ural 1026. Questions and Answers 查询

1026. Questions and Answers Time limit: 2.0 second Memory limit: 64 MB Background The database of the Pentagon contains a top-secret information. We don’t know what the information is — you

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

oracle11.2g递归查询(树形结构查询)

转自: 一 二 简单语法介绍 一、树型表结构:节点ID 上级ID 节点名称二、公式: select 节点ID,节点名称,levelfrom 表connect by prior 节点ID=上级节点IDstart with 上级节点ID=节点值 oracle官网解说 开发人员:SQL 递归: 在 Oracle Database 11g 第 2 版中查询层次结构数据的快速

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: