没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前言 在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程。 我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法: 1、FromSql,官方文档 DbSet<TEntity>.FromSql() 2、执行SQl命令 DbContext.Database.ExecuteSqlCommand() 但是,这两种方式都有局限性: 1、FromSql方式的结果一定要是实体类型,就是数据库表映射的模型。这意味着,执行存储过程返回的结果一定是跟数据库表相关的所有字段; 2、FromSql方式的结果不能有关联关系数据。这就
资源推荐
资源详情
资源评论





















.net core EF Core调用存储过程的方式调用存储过程的方式
前言前言
在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程。
我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法:
1、FromSql,官方文档
DbSet<TEntity>.FromSql()
2、执行SQl命令
DbContext.Database.ExecuteSqlCommand()
但是,这两种方式都有局限性:但是,这两种方式都有局限性:
1、FromSql方式的结果一定要是实体类型,就是数据库表映射的模型。这意味着,执行存储过程返回的结果一定是跟数据库表相关的所有字段;
2、FromSql方式的结果不能有关联关系数据。这就相当于不能 join ,也返回不了 join 的关联表的数据。
3、ExecuteSqlCommand执行插入、更新跟删除的存储过程不能直接映射到实体(EF Core不支持嘛,在讲 EF 跟 EF Core 的区别时已经很清晰了),所以,CUD 方法不能直接调用 SaveChanges 方
法。
我们来试试演示一下:我们来试试演示一下:
(1)准备一个存储过程,一般为了方便,直接就是 DB-First,执行以下的 SQL 脚本就OK了
USE [Library] GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_getbooks] @name nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
select * from books where name like @name +'%'
END
GO
当创建好了这个有传参的有返回结果的存储过程的时候,数据库在可编程性下就有一个存储过程了(这个数据库是我专门用来做demo的)
(2)用 FromSql 调用存储过程,由上面就可以知道它是 DbSet 的方法,而 DbSet 是可以执行原生的 sql 语句去查询底层的数据库。同样,使用 DbSet 可以执行存储过程,从而返回实体类型,但就是具
有上面所说的局限性罢了。
//用 FromSql 调存储过程
var name = "C";
var books = _context.Books
.FromSql($"proc_getbooks {name}")
.ToList();
//or 使用 exec 关键字调用存储过程
//var books = _context.Books.FromSql($"exec proc_getbooks {name}").ToList();
//or 使用 SqlParameter 实例进行参数的插入
//var param = new SqlParameter()
//{
// ParameterName = "@name",
// SqlDbType = System.Data.SqlDbType.NVarChar,
// Direction = System.Data.ParameterDirection.Input,
// Size = 50,
// Value = name
//};
//or 使用 @p0 代表第一个参数,则 @p1 就代表第二个参数等以此类推
//var books = _context.Books.FromSql("proc_getbooks @p0", name).ToList();
同样,在这里值得一提的是,当我们多次调用同一个存储过程,传递同样的参数的时候,比如像下面:
//用 FromSql 多次调同一个存储过程
var name = "C";
var list1 = _context.Books.FromSql($"proc_getbooks {name}").ToList();
var list2 = _context.Books.FromSql($"proc_getbooks {name}").ToList();
资源评论

- qai07052022-11-29发现一个宝藏资源,赶紧冲冲冲!支持大佬~

weixin_38548394
- 粉丝: 2
- 资源: 913
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
最新资源
- test 数据集合for motion prediction tnt
- 数据集合train,for motion predition tnt
- txt练习文档,可用来C++读取中文txt文件,并对文件指定内容进行检测和修改
- 信息系统安全与对抗MOOC资料
- 3_面试.md
- Opera-96.0.4693.80安装包
- 电力电子技术中单相桥式双极性调制PWM型逆变电路的Simulink仿真模型
- 电力电子技术中单相桥式单极性调制PWM型逆变电路的Simulink仿真模型
- 电力电子技术中电压型单相全桥逆变电路SPWM控制的Simulink仿真模型
- 电力电子技术中的Simulink仿真模型 电压型单相全桥逆变电路移相控制
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
