Ef Core花里胡哨系列(11) ef8 无实体查询,你好!

Ef Core花里胡哨系列(11) ef8 无实体查询,你好!

EF7 引入了返回标量类型的原始 SQL 查询。 这在 EF8 中得到了增强,包括返回任何可映射 CLR 类型的原始 SQL 查询,而无需在 EF 模型中包括该类型。

使用非映射类型的查询是使用 SqlQuerySqlQueryRaw 执行的。 前者使用字符串内插来参数化查询,这有助于确保所有非常量值都被参数化。

var result = _dbContext.Database.SqlQuery<Blog>($"select * from {typeof(Blog).Name}").ToList();

非常振奋人心的是,SqlQuery的得到的结果是一个IQueryable,也就是说,可以无缝对接Linq!

所以你可以这样,在Sql中直接写上你的条件:

var cutoffDate = new DateOnly(2022, 1, 1);
var summaries =await context.Database.SqlQuery<PostSummary>(@$"SELECT b.Name AS BlogName, p.Title AS PostTitle, p.PublishedOnFROM Posts AS pINNER JOIN Blogs AS b ON p.BlogId = b.IdWHERE p.PublishedOn >= {cutoffDate}").ToListAsync();

或者这样,使用Sql拼接表,再用Linq进行筛选:

var summariesIn2022 =await context.Database.SqlQuery<PostSummary>(@$"SELECT b.Name AS BlogName, p.Title AS PostTitle, p.PublishedOnFROM Posts AS pINNER JOIN Blogs AS b ON p.BlogId = b.Id").Where(p => p.PublishedOn >= cutoffDate && p.PublishedOn < end).ToListAsync();

到目前为止,所有查询都是直接针对表执行的。 SqlQuery 也可用于在不映射 EF 模型中的视图类型的情况下从视图返回结果。 例如:

var summariesFromView =await context.Database.SqlQuery<PostSummary>(@$"SELECT * FROM PostAndBlogSummariesView").Where(p => p.PublishedOn >= cutoffDate && p.PublishedOn < end).ToListAsync();

甚至是函数:

var summariesFromFunc =await context.Database.SqlQuery<PostSummary>(@$"SELECT * FROM GetPostsPublishedAfter({cutoffDate})").Where(p => p.PublishedOn < end).ToListAsync();

亦或者是存储过程:

var summariesFromStoredProc =await context.Database.SqlQuery<PostSummary>(@$"exec GetRecentPostSummariesProc").ToListAsync();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【springboot配置文件加载源码分析】

在Spring Boot的源码中&#xff0c;配置文件的加载是在应用程序启动的早期阶段进行的。具体来说&#xff0c;配置文件加载的主要步骤发生在SpringApplication类的run()方法中的prepareEnvironment方法中&#xff0c;真正读取我们的配置文件还是PropertySourceLoader。 本篇博客…

哪个牌子最值得购买?好用的洗地机排行榜

随着生活水平的提高&#xff0c;人们对家庭卫生的重视程度也越来越高&#xff0c;家用洗地机成为了现代家庭清洁中不可或缺的一部分。2024年的品牌排行榜也开始逐渐浮出水面&#xff0c;消费者们对于哪个品牌的家用洗地机更值得信赖也开始产生了新的讨论。接下来&#xff0c;让…

跟我用路由器学Linux编程实例四

专栏目录 第一章 简单编程实现花生壳的ddns功能 第二章 让花生壳ddns脚本自动工作 第三章 同时解析多个花生壳域名的脚本 第四章 具有通用性的花生壳ddns脚本 用折腾路由的兴趣&#xff0c;顺便入门shell编程。 第四章 具有通用性的花生壳ddns脚本 文章目录 专栏目录第四章 具…

C语言快速入门——基础知识

C语言基础 C语言基础C程序基本格式基本数据类型原码、反码和补码原码反码补码 整数类型浮点类型字符类型 变量变量的使用无符号数类型转换 运算符基本运算符运算符优先级自增自减运算符位运算符逻辑运算符 流程控制分支语句 - if分支语句 - switch循环语句 - for循环语句 - whi…

defer与interface底层简记

defer&#xff1a;是go语言的一个关键字&#xff0c;用来修饰函数&#xff0c;其作用是让defer后面跟的函数或者方法调用能够延迟到当前所在函数return或者panic的时候再执行。 groutine结构体里有_defer链表指针的link字段&#xff0c;defer语句会创建_defer结构体&#xff0…

Ebean:一款被低估的ORM框架

ORM框架为什么不香&#xff1f; 对ORM框架的偏见 看了一些MyBaties与Hibernate进行对比的文章。可能是因为一些Hibernate历史原因&#xff0c;国内对于Hibernate普遍存在偏见&#xff0c;我摘抄了几点&#xff1a; 1. hibernate是全自动&#xff0c;而mybatis是半自动 hibernat…

如何让软文真正起效?媒介盒子为你解答

在如今这个互联网大环境下&#xff0c;想要写出有价值的软文去“忽悠”用户其实是不简单的&#xff0c;那我们应该怎么做才能让软文真正起效呢&#xff1f;媒介盒子为你解答。 一、软文写作前 1.了解平台特性 每个平台都有自己的定位。有的定位于以分享专业知识为主&#xff…

Unreal FFastArray实现原理

文章目录 使用示例原理说明修改操作序列化保存部分序列化读取部分 使用示例 // 结构体继承FFastArraySerializerItem USTRUCT() struct FXXX: public FFastArraySerializerItem {GENERATED_USTRUCT_BODY()UPROPERTY()int32 XXX;// 客户端同步回调void PreReplicatedRemove();v…

某和医院招采系统web端数据爬取, 逆向js

目标网址:https://zbcg.sznsyy.cn/homeNotice 测试时间: 2024-01-03 1 老规矩,打开Chrome无痕浏览,打开链接,监测网络,通过刷新以及上下翻页可以猜测出数据的请求是通过接口frontPageAnnouncementList获取的,查看返回可以看出来数据大概率是经过aes加密的,如图: 通过查看该请…

智能算力网络Parrot的三个基石假设

任何一个生态系统的发展&#xff0c;包括科学知识体系的发展&#xff0c;都离不开第一性原理层面的科学假设。 欧几里得在五个公理的假设基础之上&#xff0c;推导出416条定律&#xff0c;创立了欧氏几何&#xff0c;推动了人类征服大自然的进程。 王坚博士的三个假设&#x…

014、枚举与模式匹配

枚举类型&#xff0c;通常也被简称为枚举&#xff0c;它允许我们列举所有可能的值来定义一个类型。在本篇文章中&#xff0c;我们首先会定义并使用一个枚举&#xff0c;以向你展示枚举是如何连同数据来一起编码信息的。 接着&#xff0c;我们会讨论一个特别有用的枚举&#xff…

提升设计效率:全面了解如何使用Figma插件

Figma组件库包括颜色、字体、图标、按钮、阴影、圆角、间距等。当Figma组件库的样式和Figma组件达到一定数量时&#xff0c;将难以维护&#xff0c;设计和开发的对接成本将大大提高。Figma可以在同一母版下单独设置样式&#xff0c;而不影响与母版之前的关系&#xff0c;这是Sk…

JAVA进化史: JDK13特性及说明

JDK 13于2019年9月发布。这个版本引入了一些新特性和改进&#xff0c;以下是其中一些主要特性: 动态的CDS归档文件 引入了动态的Class Data Sharing&#xff08;CDS&#xff09;归档文件&#xff0c;以提高Java应用程序的启动性能。它允许多个Java进程共享相同的已经被预先加…

9.java——(杂例)组合,代理,向上转型static,fianl,关键字(有道云笔记复制粘贴,大家整体性的把握)

组合——内部有类&#xff08;心中有对象&#xff01;&#xff01;&#xff01;&#xff09;&#xff08;足球 和足球运动员梅西和脚下的足球一样&#xff09; has和is的区别&#xff0c;has是组合&#xff0c;是有&#xff0c;持有的意思&#xff1b;is是继承&#xff0c;是…

springboot整合mongodb批量修改和添加索引

1&#xff1a;创建字段索引 collection 是集合名称&#xff0c;keys 是一个包含一个或多个字段名&#xff0c;options是排序方向&#xff0c;1正序&#xff0c;-1倒叙 db.collection.createIndex(keys, options)#单字段 db.collection.createIndex(name: 1)#多字段 db.collec…

C++八股学习心得.3

1.C 数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素&#xff0c;最高的地址对应最后一个…

实时计算大作业kafka+zookeeper+storm+dataV

第一章 总体需求 1.1.课题背景 近年来&#xff0c;大数据称为热门词汇&#xff0c;大数据分析随着互联网技术的发展愈加深入电商营销之 中&#xff0c;越来越多的电商企业利用大数据分析技术&#xff0c;利用信息化对产业发展营销方向进行确定&#xff0c; 对电子商务行…

双碳管理系统任务需求分析(第10套)

需求规格说明书 一、引言 &#xff08;一&#xff09;项目背景 编写本需求规格说明书的目的是为了详细呈现碳足迹产品需求和系统的功能描述&#xff0c;以进一步定制应用软件系统开发的细节问题&#xff0c;便于与项目开发协调工作。本文档面向的读者主要是项目委托单位的管…

git rebase(变基)应用场景

文章目录 git rebase(变基)应用场景1.git rebase -i HEAD~3 git rebase(变基)应用场景 使得提交记录变得简洁 现在我们模拟我们有多次提交记录&#xff0c;本地仓库有三条提交 整合成一条提交记录 1.git rebase -i HEAD~3 提交记录合并 HEAD~3合并三条记录 执行之后 然后把…

事实就是这么残酷,分享一个案例投资者是怎么一步步失败

都说交易市场要学会斗智斗勇&#xff0c;但fpmarkets澳福提醒交易者要始终记住&#xff0c;买的没有卖的精&#xff0c;下面就分享一个案例&#xff0c;让各位投资者知道现实就是这么残酷&#xff0c;一些无良的资本是怎么一步步让投资者失败的。 当在整个交易市场中渐渐地&am…