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