首页 > 数据库 >EF Core 执行原生SQL

EF Core 执行原生SQL

时间:2022-10-01 15:35:47浏览次数:41  
标签:语句 Core 原生 SQL EF 查询 Sql

1. 执行Sql 非查询语句

[HttpPost("InsertBatch")]
        public async Task<ActionResult> InsertBatch()
        {
            string title = "执行原生Sql非查询语句";
            double price = 89.6;
            DateTime date = DateTime.Now;
            int rows = await _context.Database
                .ExecuteSqlInterpolatedAsync($@"insert into T_Book (Title,PUbTime,Price,AuthorName) values({title},{date},{price},'张三')");
            return Ok(rows);
        }

 

ExecuteSqlInterpolatedAsync()  方法会将插入字符串中的插入值{tile}转换成参数形式的Sql,所以不用担心Sql注入问题。(推荐)

ExecuteSqlRawAsync() 是拼溱字符串,会有Sql注入风险。
2. 执行实体类Sql查询语句

由于IQueryable这种线 大的“查询再加工”能力,我们可以把只能用原生Sql语句写的逻辑用FromSqlInterpolated执行,然后把分页、分组、二次过滤、排序、Include等其他逻辑仍然使用EF Core 的标准操作实现。

FromSqlInterpolated的使用有以下局限性:

  • 查询结果集必须和实体类一 一对应。
  • 必须返回表的全部列。
  • 只能进行单表查询,不能使用Join关联查询,但在查询后可再使用Include方法进行关联数据的获取。

 

 

标签:语句,Core,原生,SQL,EF,查询,Sql
From: https://www.cnblogs.com/friend/p/16747249.html

相关文章

  • Educational Codeforces Round 136 C. Card Game
    题意:有1-n的一个排列,其中n是偶数,A和B两个人拿这副牌玩游戏,两个人绝顶聪明。A拿一半牌,B拿一半牌。规则很简单,A先手出牌,如果B有比他大的牌,那出一张比他大的牌,这一轮结束,下一......
  • 【MySQL】MySQL分区是如何处理NULL的
    MySQL的分区实现中,认为NULL比任何non-NULL值都小。和orderby类似。​RANGE分区是如何处理NULL的?如果将行插入到按RANGE分区的表中,使得用于确定分区的列值为NULL,则该行将......
  • mysql中的事务隔离级别序列化如何实现
    ......
  • mysql基础(十六):定义条件、定义处理程序
    简介定义条件是事先定义程序执行过程中可能遇到的问题,处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增......
  • mysql基础(十一):数据类型
    起步数据类型数据类型的属性整数代码案例#创建数据表,指定字段类型CREATETABLEtest_int1(f1TINYINT,f2SMALLINT,f3MEDIUMINT,f4INTEGER,f5BIGINT);#插入没有超出范......
  • mysql基础(六):单行函数
    起步简介操作数据对象接受参数返回一个结果只对一行进行变换每行返回一个结果可以嵌套参数可以是一列或一个值数值基本函数代码案例#绝对值SELECTABS(-123),ABS(32),SIG......
  • mysql基础(三):运算符
    前言算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算加减运算符一个整数类型的值对整数进......
  • mysql基础(五):多表查询
    表结构如下代码案例#两个表的连接查询SELECTemployee_id,department_nameFROMemployees,departmentsWHEREemployees.`department_id`=departments.department_id;#......
  • mysql基础(二):select语句
    SQL分类SQL语言在功能上主要分为如下3大类:DDL(DataDefinitionLanguages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除......
  • C语言第20天,typedef关键词和条件编译
    1.给整型类型取别名原因:我们在整型数据类型中讨论过的,C语言标准并未规定这些数据类型的大小范围,具体的实现交由了编译器和平台决定。也就是说,int在VisualStudio2019中......