ABP 数据库 -- ABP&EF中的多表、关联查询
本文介绍一下ABP中的多表查询。
1.创建实体
多表查询,在ABP或者EF中都很简单,这里我们创建一个Demo,一个学生实体、一个学校实体。
学校里面可以有很多学生,学生有一个学校。
实体如下:
学校
public class School:Entity<long>
{ public string Name { get; set; } public string Address { get; set; }
/// <summary>
/// 学校里面的学生们
/// </summary>
public List<Student> Students { get; set; } }
学生
public class Student: Entity<long>
{ public string Name { get; set; }
/// <summary>
/// 学生所在的学校
/// </summary>
public School School { get; set; } }
2.创建数据
现在我们来创建一下Student与School的数据。
School的数据如下:
Student的数据如下:
可以看到,Student名字为alun1、alun2、alun3的对应School1、2、1。
3.查询实体
下面,我们在应用层AppService下面用Repository来查询结果如何。
//用GetAllIncluding方法来查询所有学生的信息,结果包含School实体
var listStudent1 = _studentRepository.GetAllIncluding(s=>s.School).ToList(); //用GetAll方法来查询所有学生的信息,结果包含School实体
var listStudent2 = _studentRepository.GetAll().ToList(); //用GetAll方法来查询所有学校的信息,结果包含List Students实体
var listSchool1 = _schoolRepository.GetAll().ToList(); //用GetAllIncluding方法来查询所有学校的信息,结果包含List Students实体
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
可以关注本人的公众号,多年经验的原创文章共享给大家。
ABP 数据库 -- ABP&EF中的多表、关联查询的更多相关文章
- 详解MongoDB中的多表关联查询($lookup)
一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息. 聚合管道操作主要包含下面几个部分: 命令 功能描述 $projec ...
- 详解MongoDB中的多表关联查询($lookup) (转)
一. 聚合框架 聚合框架是MongoDB的高级查询语言,它允许我们通过转换和合并多个文档中的数据来生成新的单个文档中不存在的信息. 聚合管道操作主要包含下面几个部分: 命令 功能描述 $projec ...
- EF中使用linq进行关联查询
EF使用linq进行多表查询是完全可以的,最后ToList()调用的时候回产生一条分页的sql语句,所以并不是全部查询再分页的.所以不会影响查询的性能 public void TestLinq() { ...
- mysql数据库-初始化sql建库建表-关联查询投影问题
下面是一个简易商城的几张表的创建方式 drop database if exists shop ; create database shop CHARACTER SET 'utf8' COLLATE ...
- Mysql中实现多表关联查询更新操作
今天一下要记录一下才行了,每次都要去网上查找方法,每次都难找得要命 Mysql在更新某些字段的数据时,有时候会依据其他表的数据进行更新,需要通过关联后对不同的行更新不同的值,传统的update set ...
- 数据库MySQL中关于“多表关联更新”的那些事
在常见的sql中,我们经常在查询中进行多表关联查询,用的比较熟练.今天在开发中遇到一个实际业务场景是多表关联更新,一时不知所措.本着多学习的态度,没有直接写java代码去实现,终于把多表关联更新的sq ...
- ORACLE数据库多表关联查询效率问题解决方案
最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字 ...
- Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!
之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...
- Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询
在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
随机推荐
- Tencent interview
1.常见的聚类算法 1):划分法:k-means 2):基于密度的方法: 2.EM 算法 EM算法是在概率模型中寻找参数的最大似然估计或者最大后验概率的算法,其中概率模型依赖于无法观测的隐藏变量.EM ...
- 6.Django扩展
富文本编辑器 借助富文本编辑器,管理员能够编辑出来一个包含html的页面,从而页面的显示效果,可以由管理员定义,而不用完全依赖于前期开发人员 此处以tinymce为例,其它富文本编辑器的使用可以自行学 ...
- FastReport套打 和连续打印
FastReport套打,纸张是连续的带锯齿的已经印刷好的,类似于通信公司发票这里设计的是客户销售记录.客户有两个要求:1.因为打印纸张是印刷的,明细记录只有8行,所以,如果明细记录如果不到8行,就将 ...
- ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下
先简单了解一这个几个 名词的意思. 控制反转(IOC) 依赖注入(DI) 并不是某种技术. 而是一种思想.一种面向对象编程法则 什么是控制反转(IOC)? 什么是依赖注入(DI) 可以点击下面链接 ...
- vscode 学习笔记 —— 调试 (以 node 为例)
一.建立配置文件 1.选择你的项目 2.选择你项目的语言 3.当前项目路径下生成 .vscode/launch.json { // Use IntelliSense to learn about po ...
- CSS中text-shadow的几个好看的文字demo及其代码
最近有看到一些镂空的或者立体的文字设计图非常好看,然后想了想,应该是使用text-shadow来实现的,这里我贴出我仿的八个demo,分享给大家 首先是HTML代码 <div class=&qu ...
- 让PETSc跑得再快一些
最近做了一个使用PETSc来求解线性方程组(Ax=b)的项目,把其中遇到的一些坑和解决方法记录下来.本文不介绍PETSc如何入门,而是给出一些能让PETSc运行得更快的编程细节.开始我只是简单地修改P ...
- POJ 2521
#include <iostream> #include <stdio.h> using namespace std; int main() { //freopen(" ...
- jquery.cropper 裁剪图片上传
https://github.com/fengyuanchen/cropper 1.必要的文件引用: <script src="/path/to/jquery.js"> ...
- oc中的枚举
如果一个变量只有几种可能的值,比如星期有几天,一年有几个季节等.这个时候可以用枚举变量. 先定义类型再定义变量,如:enum siji{chun,xia,qiu,dong} 也可以定义匿名:enum{ ...