c efcore.mysql_EF Core在mysql中调用存储过程

本文介绍了如何在 EF Core 中使用 Pomelo 驱动调用 MySQL 存储过程。文章指出常见的 `FromSql` 方法存在限制,不适合在 EF Core + MySQL 的环境下使用。因此,提出了使用 `ExecuteReader` 方法来执行存储过程,详细提供了在 `DbContext` 类中添加自定义方法的代码示例,以及如何调用存储过程的示例。
摘要由CSDN通过智能技术生成

EF Core在mysql中调用存储过程,博主找了很多,然而大多都是EF Core+SqlServer的或者EF Core+Oracle的,并没有正对Mysql的Pomelo驱动的,所以查找了一些资料和博文之后,进行一些修改,最终得到下面的代码。

1. 方式一【FromSql】

搜索到的基本上都这样的方式

using (var dataContext = new DbContext()) {

var param = 1;

var query = dataContext.Table.FromSql($"procname {param}");

var result = query.ToList();

Assert.NotNull(result);

}

然而这种方式有两个弊端,一是Table必须是包含在DbContext中,这也就意味着要建一个对应的表在数据库中,二是这种查询在mysql的pomelo驱动中,会存在一些不完善,导致在数据库直接执行存储过程的结果和在EF Core中调用执行的结果不一致,且还会出现数据集结果全是一样的重复数据,所以这种方式在EF Core+Mysql中不能使用。

2. 方式二【ExecuteReader】

使用最基本的读取方式,这种方式基本上已经脱离了EF上下文,具体可以参考链接EF切EFCore2.0存储过程问题

不过博主的这篇文章是针对sqlserver的,mysql并不使用,所以我改写了一下使用ExecuteReader读取数据的过程,添加一个方法在DbContext类中,代码如下

///添

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值