一、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. 浅谈云主机在VPC中进行迁移的使用场景和操作方法

    本文分享自天翼云开发者社区<浅谈云主机在VPC中进行迁移的使用场景和操作方法>,作者:刘****雪 一.客户经常遇到的网络迁移问题 客户在天翼云购买一台云主机并且部署完成想要的应用后,发现 ...

  2. [记录点滴] 记录一次用 IntelliJ IDEA遇到scope provided 的坑

    0x00 问题 最近在调试一个网上的项目,结果遇到两个问题,特此记录下解决过程. 问题: 某一个jar包有版本冲突 某一个类,居然在IntelliJ IDEA中运行调试时候找不到 0x01 解决途径 ...

  3. Q:su命令无法切换用户问题,密码正确可登录

    一.文件权限问题 查看文件权限: ll -a /bin/su /usr/bin/passwd 正确的结果为: 错误的结果为: suid和普通x执行权限 s:当普通用户使用su的时候,采用的是owner ...

  4. WPF 创建自定义鼠标光标指针

    WPF Cursor类中的两个构造函数: public Cursor(Stream cursorStream) public Cursor(string cursorFile) 以上的构造函数所使用的 ...

  5. 库卡机器人KR500维修保养

    随着现代工业自动化,KUKA库卡机器人以其卓越的性能.灵活的操作和高效的产出而备受赞誉.然而,为了确保机器人的持续稳定运行和延长使用寿命,应联系子锐机器人维修对库卡机器人保养至关重要. 一.库卡机器人 ...

  6. docker - [05] 部署Nginx

    题记部分 一.查找镜像 docker search nginx 二.拉取镜像 docker pull nginx 三.启动镜像 Nginx默认端口号为80,可以在启动时指定Nginx使用的端口号(例如 ...

  7. Windows 提权-SeBackupPrivilege 特权

    本文通过 Google 翻译 Sebackupprivilege – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注 ...

  8. 使用Node.js对接StockTV全球金融市场数据API

    使用Node.js对接StockTV全球金融市场数据API 摘要:本文详细介绍了如何通过Node.js客户端库快速接入StockTV全球金融市场数据API,涵盖股票.外汇.期货和加密货币的实时行情获取 ...

  9. mysql - 视图的操作 创建,修改,删除,查看

    只保存sql逻辑,不保存查询结果 视图可以看作是封装了多条sql语句,之后使用的时候就像普通表一样,而这个表上的字段则是创建视图时,select 后边跟的字段,支持列的别名. 创建 语法: creat ...

  10. Golang 入门 : 转换

    Go中数学运算和比较运算要求包含的值具有相同的类型.如果不是的话,则在尝试运行代码时会报错. 为变量分配新值也是如此.如果所赋值的类型与变量的声明类型不匹配,也会报错. 解决方法是使用转换,它允许你将 ...