tnblog
首页
视频
资源
登录

ABP 数据库 -- ABP&EF中的多表、关联查询 GetAllIncluding方法

8950人阅读 2022/3/30 17:21 总访问:1474363 评论:0 收藏:0 手机
分类: ABP


1.创建实体

多表查询,在ABP或者EF中都很简单,这里我们创建一个Demo,一个学生实体、一个学校实体。

学校里面可以有很多学生,学生有一个学校。

实体如下:

学校

  1. public class School:Entity<long>
  2.      {
  3.         
  4.         public string Name { get; set; }
  5.         public string Address { get; set; }
  6. /// <summary>
  7.         /// 学校里面的学生们
  8.         /// </summary>
  9.         public List<Student> Students { get; set; } 
  10.     }

学生

  1. public class Student: Entity<long>
  2.     {
  3.         public string Name { get; set; }
  4. /// <summary>
  5.         /// 学生所在的学校
  6.         /// </summary>
  7.         public School School { get; set; }
  8.     }

2.创建数据

现在我们来创建一下Student与School的数据。

School的数据如下:

image

Student的数据如下:

image

可以看到,Student名字为alun1、alun2、alun3的对应School1、2、1。

3.查询实体

下面,我们在应用层AppService下面用Repository来查询结果如何。

  1. //用GetAllIncluding方法来查询所有学生的信息,结果包含School实体
  2.                 var listStudent1 = _studentRepository.GetAllIncluding(s=>s.School).ToList();
  3.                 //用GetAll方法来查询所有学生的信息,结果包含School实体
  4.                 var listStudent2 = _studentRepository.GetAll().ToList();
  5.                 //用GetAll方法来查询所有学校的信息,结果包含List Students实体
  6.                 var listSchool1 = _schoolRepository.GetAll().ToList();
  7.                 //用GetAllIncluding方法来查询所有学校的信息,结果包含List Students实体
  8.                 var listSchool2 = _schoolRepository.GetAllIncluding(s=>s.Students).ToList();

可以看到,结果都包含Student包含School的实体,而且School包含集合是Students。

值得注意的是,这里的GetAllIncluding与GetAll的区别是,GetAllIncluding是明确的指明我要查询的实体里面包含的其他表的实体也要查询出来。

例如,GetAllIncluding(s=>s.School),告诉EF,查询Student的时候,请把它关联的School也查询出来。

如果有多个实体关联,请用逗号“,”隔开。例如 GetAllIncluding(s=>s.School, s=>s.Class)

 

对于ABP,如果是多租户,用户等多租户的信息查询不到的情况下,在查询前请加下面一句话

CurrentUnitOfWork.DisableFilter(AbpDataFilters.MayHaveTenant, AbpDataFilters.MustHaveTenant);

因为在做多租户的查询是,ABP默认会加一些Filter,只能查询当前登录用户的信息,其他用户的信息Filter掉。

所以上面的意思是去掉多租户查询时的Filter

原文:https://www.cnblogs.com/alunchen/p/6835297.html

评价

.netcore3.1 ABP+vue 实战 (一)

ABP前言一个应用程序框架和起点的ASP.NET MVC web应用程序与最佳实践和最流行的工具!(它是这样说的)1.项目的创建创建项...

ABP框架的介绍和基用法

一、什么是ABP框架? ABP框架全称为“ASP.NETBoilerplateProject”,中文翻译为“ASP.NET样板项目”,诞生的主要目的就是...

ABP数据库迁移

让我们来了解数据库迁移吧!还坑了我好久哇!一、首先二、出现程序包后按以下步骤做如果没按照以上步骤做的话你输入的是add...

ABP添加菜单(服务端添加菜单项)

一 首先创建好一个项目二、找到Navigation结尾类,在类中找到SetNavigation方法,按照模板中提供的菜单添加方法添加MenuIte...

ABP 框架之Navicat 误删数据库怎么恢复

前言:hello 大家好 我们又见面了 我是小付今天我tmd手贱 不小心把数据库干没了一言难尽啊,话不多说一起来看看吧。上次我...

ABP框架中用插件生成复选框(神坑)

前言:hello ,各位老铁们 五一收假了 也该收心了 今天和小付一起来看看我遇到的问题吧!今天要说的是用插件生成复选框上次...

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

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

ABP tatable插件实现页面跳转查询数据

columnDefs:[ { targets:0, data:&quot;identification&quot;, render:function(data){ //此处是跳转页面连接(根指定...

ABP swagger方法重载

代码:services.AddSwaggerGen(c =&gt; { c.ResolveConflictingActions(apiDescriptions =&gt; apiDescriptions.First()); });

ABP项目下载

下载链接:https://aspnetboilerplate.com/Templates版本视情况而定1.2.

ABP 视图生成

一.先在数据库生成一个视图,如下:二.在ABP程序的Core层创建与数据库里视图所对应的实体如下:三.在ABP程序的EntityFrame...

ABP Xml为Swagger接口页添加详细注释

我们选中我们Application层的项目,右键“属性”,勾选为Xml生成文档,如下图所示。在你的 项目名.Web.Host 的startup目录...

ABP 控制台的基本操作

Update-Database -Migration:0 (删除表结构,受用于数据库,它把数据库的表结构删了)drop-database(数据库删除)Remove-...

ABP 自动映射 AutoMapper

转载:https://www.cnblogs.com/sugarwxx/p/13298800.html自动映射有如下几种:AutoMap,AutoMapFrom和AutoMapTo1.AutoMap...

ABP 多租户数据共享

转载于:https://www.cnblogs.com/Martincheng/p/10185430.htmlABP开启多租户,实体继承了IMayHaveTenant或者IMustHaveTena...
没有个性,不需要签名
排名
4
文章
473
粉丝
3
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术