使用EF Core框架能快速的帮助我们进行常规的数据处理和项目开发,但是ORM虽然好用,但是在许多复杂逻辑的数据处理时,我个人还是偏向用SQL和存储过程的方式去处理,但是研究了一下目前最新版本的EF Core(我用的是2.1)以及相关文档,貌似没有找到可以很好支持原始SQL开发的方案,于是就自己简单的扩展了一下
首先说一下我查阅文档找到已知的EF Core可以执行SQL和存储过程的两个函数ExecuteSqlCommand()和FromSql()
1,ExecuteSqlCommand(),代码中的EntityContext即为数据框架上下文对象,这种方法可以执行sql或者存储过程并且传递参数,但是缺点就是函数的返回结果为int类型的受影响行数,无法返回指定的数据集
private EntityContext context = null;publicValuesController(EntityContext _context)
{
context=_context;
}///
///测试代码///
///
[HttpPost("Post")]public intPost()
{long uid = 4;int data = context.Database.ExecuteSqlCommand($"exec proc_test {uid}", uid);returndata;
}
2,FromSql()可以用来执行带参数的sql,这个函数的用法以及优缺点可以看官方文档的这篇文章
https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
3,用