一、EFCore里Select的应用:

1)避免查询select *,可指定查询合适的字段

var comment = context.artitles.Select(c =>new { Id = c.Id, Content = c.Content } ).Single(c => c.Id == 1);

2)可灵活选择实体类接收EFCore的查询结果

比如我们为了避免暴露数据库表entity里的字段,采用entityDTO实体去重新命名字段名称,传递给前台。

指定一个传值给前台的DTO实体类

 public class ArticleDTO
{
public string ArticleTtitle { get; set; }
public string ArticleContent { get; set; } }
//用entityDTO接收entity的查询结果
List<ArticleDTO> list = context.artitles.Select(ac=>new ArticleDTO(){ArticleTtitle = ac.Ttile,
ArticleContent = ac.Content
}).ToList<ArticleDTO>();

二、不走联表查外键字段的操作

问题:不走include联表查询,在Comment查找出对应外键theArtitleId的值

我们在Demo2里定义了Comment是

 public  class Comment
{
public int Id { get; set; }
public string Message { get; set; }
public Artitle theArtitle { get; set; }
}

解决:

1、在类里定义外键theArtitleId

 public  class Comment
{
public int Id { get; set; }
public string Message { get; set; }
public Artitle theArtitle { get; set; }
//定义外键的字段
public int theArtitleId { get; set; }
}

2、在映射表里去声明

public class CommentMap:IEntityTypeConfiguration<Comment>
{
public void Configure(EntityTypeBuilder<Comment> builder)
{
builder.ToTable("comment");
builder.Property(b => b.Id).IsUnicode().ValueGeneratedOnAdd();
builder.Property(b => b.Message).IsRequired().HasMaxLength(50);
//指定一个外键theArtitle,artitle包含多个Comments,HasForeignKey指定对应的外键
 builder.HasOne<Artitle>(a=>a.theArtitle).WithMany(c=>c.Comments).HasForeignKey("theArtitleId").IsRequired(); } }

查询:

var comment = context.comments.Single(c => c.Id == 1);
Console.WriteLine("评论:" + comment.Message);
Console.WriteLine("评论对应文章ID:" + comment.theArtitleId);

查看执行的sql:

没有联表

												

EFCore Study(四)——Select的应用及不走联表查外键字段的操作的更多相关文章

  1. 把一个select查询结果插入到一个表(可选指定字段和值实例)

    把一个select查询结果插入到一个表(可选指定字段和值实例) insert into  bak (cc,yf) select cc,9 from ket insert into bak (cc,yf ...

  2. MariaDB第四章:视图,事务,索引,外键--小白博客

    视图 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦 假如因为某种需求,需要将user拆房表usera和表userb,该两张表的结 ...

  3. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  4. 自增特性,外键,级联更新与级联删除,表间关系,SELECT用法,GROUP BY

    自增特性 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值. 自动增长的语法: 字段名 数据类型 AUTO_INCR ...

  5. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

    [CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...

  6. 四、Sql Server 基础培训《进度4-插入数据(实际操作)》

    知识点: 假设有订单表 CREATE TABLE Order ( ID int identity(1,1) not null primary key, --内码 BillNo varchar(100) ...

  7. mariadb(四)连接查询,视图,事物,索引,外键

    一.连接查询 1)进入自己创建的zz数据库 2)创建学生表: create table students ( id int unsigned not null auto_increment prima ...

  8. information_schema系列四(跟踪,列约束,表和列)

    这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:KEY_COLUMN_USAGE 按照官方的解释,这个表描述的是 ...

  9. Django(四) ORM 外键操作及初识Ajax

    一.内容回顾 1.Django请求的生命周期: ​ 路由系统 -> 视图函数(获取模板+数据 -> 渲染) -> 字符串返回给用户 2.路由系统: /index/ #-> 函数 ...

  10. Python学习(三十四)—— Django之ORM之单表、联表操作

    一.单表查询API汇总 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kw ...

随机推荐

  1. Celery异步分布队列

    Celery分布式任务队列 一.Celery介绍celery periodic task Celery 是一个基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的 ...

  2. 同步一下在notion上写的内容

    之前在notion上写了一些内容,但因为notion上的编辑器和博客园的不太一样,所以不好直接搬运过来,这里同步一下链接: 之前看MIT线性代数网课做的笔记:重温线性代数 算法课笔记之一:分而治之 算 ...

  3. 发那科FANUC机器人A06B-0652-B212电机维修基本流程

    发那科FANUC机器人以其卓越的性能和可靠性赢得了广泛的认可.然而,就像其他任何机械设备一样,长时间的运行和复杂的工作环境都可能使伺服电机面临维修的需求.为了确保您的发那科FANUC机器人A06B-0 ...

  4. Android Service后台服务进程意外被kill掉之后如何重启

    Service组件在android开发中经常用到,经常作为后台服务,需要一直保持运行,负责处理一些不必展示的任务.而一些安全软件,会有结束进程的功能,如果不做Service的保持,就会被其杀掉. 那么 ...

  5. CF889E题解

    \(\text{Problem - 889E - Codeforces}\) \(\text{*3000}\) 修正 感谢学长 \(\text{fs}\) 指出状态数原因解释的错误. 题意 给一个序列 ...

  6. 面试题58 - I. 翻转单词顺序

    地址:https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/ <?php/**输入一个英文句子,翻转句子中单词的顺序,但单 ...

  7. Qt QCheckBox设置复选框的大小

    文章目录 Qt设计QCheckBox样式表 QCheckBox的各部分代表的样式表 Qt QCheckBox设置复选框的大小 Qt设计QCheckBox样式表 QCheckBox的各部分代表的样式表 ...

  8. websocket 后台新订单通知 —— Laravel 5.8 workman PHPSocket.IO教程

    websocket 后台新订单通知 -- Laravel 5.8 Laravel-echo-server教程 PHPSocket.IO,PHP跨平台实时通讯框架 PHPSocket.IO是PHP版本的 ...

  9. Python 加上颜色进行输出

    博客地址:https://www.cnblogs.com/zylyehuo/ print(f"\033[42m文本内容\033[0m")

  10. OkHTTP发送POST请求传送JSON数据

    导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...