.net core EF Core调用存储过程的方式
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)

前言 在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程。 我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法: 1、FromSql,官方文档 DbSet<TEntity>.FromSql() 2、执行SQl命令 DbContext.Database.ExecuteSqlCommand() 但是,这两种方式都有局限性: 1、FromSql方式的结果一定要是实体类型,就是数据库表映射的模型。这意味着,执行存储过程返回的结果一定是跟数据库表相关的所有字段; 2、FromSql方式的结果不能有关联关系数据。这就 在.NET Core中,Entity Framework Core (EF Core) 是一个轻量级、高性能的ORM框架,用于构建基于.NET的应用程序。虽然EF Core不直接支持调用存储过程,但它提供了两种间接的方式来执行存储过程:`FromSql()` 和 `DbContext.Database.ExecuteSqlCommand()`。 1. `FromSql()` 方法: `FromSql()` 方法允许开发者直接执行SQL语句,这可以包括存储过程的调用。然而,这种方式有以下局限性: - 结果必须是实体类型:返回的结果集需要与数据库中的一个实体表映射,这意味着存储过程返回的所有字段必须对应于某个实体的属性。 - 无法处理关联数据:如果存储过程返回的结果涉及多个表的JOIN操作,`FromSql()` 无法自动处理这些关联关系。 示例代码如下: ```csharp var name = "C"; var books = _context.Books.FromSql($"proc_getbooks {name}").ToList(); ``` 或者,你可以使用`SqlParameter`来传递参数: ```csharp var param = new SqlParameter("@name", name); var books = _context.Books.FromSql("proc_getbooks @name", param).ToList(); ``` 2. `DbContext.Database.ExecuteSqlCommand()` 方法: 这个方法更适用于执行不返回实体结果的存储过程,如插入、更新和删除操作。它不会映射到任何实体,因此不能直接调用`SaveChanges()`。 示例代码: ```csharp var result = _context.Database.ExecuteSqlCommand($"EXEC proc_getbooks '{name}'"); ``` 使用`ExecuteSqlCommand()`执行存储过程时,由于不返回实体,因此无法利用EF Core的追踪机制。这意味着每次调用都会执行实际的数据库查询,不会从缓存中获取结果。 在进行多次相同存储过程调用时,如果参数不变,EF Core会默认跟踪实体,所以即使调用多次,只要查询结果相同,实际上只会查询数据库一次,其余的从内存中的缓存中获取。这对于性能优化是有益的,但需要注意的是,这仅适用于`FromSql()`,不适用于`ExecuteSqlCommand()`,因为它不返回实体。 .NET Core EF Core虽然不直接支持存储过程,但通过`FromSql()`和`ExecuteSqlCommand()`可以灵活地执行存储过程。在选择使用哪种方法时,应根据存储过程的性质(是否返回实体、是否涉及关联数据等)以及性能需求来决定。




















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

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


最新资源
- Python数据可视化中的Matplotlib进阶技巧.doc
- Python爬虫中的代理池构建与维护方法.doc
- Python爬虫从入门到突破反爬策略全流程.doc
- Python数据清洗的自动化方法与工具.doc
- Python正则表达式的高级用法与实例.doc
- Python异步编程与协程的进阶实践.doc
- Redis持久化机制的原理与数据恢复方法.doc
- Redis在高并发秒杀系统中的应用优化.doc
- TensorFlow与PyTorch在图像识别中的对比.doc
- Vue与React在大型项目中的架构对比分析.doc
- WebAssembly在前端游戏开发中的应用.doc
- WebAssembly在复杂计算中的应用探索.doc
- Web安全防护的多层架构与实践方法.doc
- Web性能优化的关键指标与监控方法.doc
- Web安全漏洞的自动化检测与修复方案.doc
- 大规模数据库备份与恢复的自动化实现.doc


