900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > FreeSql执行存储过程的使用方式

FreeSql执行存储过程的使用方式

时间:2020-02-15 03:37:23

相关推荐

FreeSql执行存储过程的使用方式

本人使用的是.netframework4.5 WPF 框架开发的上位机软件,在程序开发中使用ORM和FreeSql作为数据库开发工具,最近在使用FreeSql的时候遇到一些问题,解决后记录下来。

如何在C#中使用FreeSql进行存储过程的执行,以下代码示例:

var dt = ORM.FreeSqlOperater.mandFluent("CALL get_product_status(@a1,@a2,@a3,@a4,@a5,@'a6',@'a7')").WithParameter("a1", p_Index).WithParameter("a2", p_Dispatch_No).WithParameter("a3", p_Part_No).WithParameter("a4", p_Product_No).WithParameter("a5", p_Operation_No).WithParameter("a6", null, v => v.Direction = ParameterDirection.Output).WithParameter("a7", null, v => v.Direction = ParameterDirection.Output).ExecuteDataTable();

我的存储过程是这样的:

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_product_status`(IN `p_Index` INT,IN `p_Dispatch_No` VARCHAR(50),IN `p_Part_No` VARCHAR(50),IN `p_Product_No` VARCHAR(50),IN `p_Operation_No` INT,OUT `o_Result` INT,OUT `o_Seq_No` VARCHAR(50))LANGUAGE SQLNOT DETERMINISTICCONTAINS SQLSQL SECURITY DEFINERCOMMENT '获取产品在当前工单下所有测试项状态结果'BEGIN-----省略内容--------------最后一步select o_Result,o_Seq_No;输出两个参数END

可以看到我有两个输出参数,其实FreeSql里面的CommandFluent这个方法,实际上和我们使用sql语句是一样的,因为我有两个输出参数,其中一个输出参数是字符,字符在sql里面需要添加单引号,我尝试了很久终于知道需要在@后面加上单引号,说明这是一个字符参数。@符号表示这是一个参数,请注意直接写sql语句和FreeSql里面执行存储过程的区别就在于,参数需要添加@符号。

因为项目需要FreeSql我是做了一个公共类,方便使用和记录日志。部分代码如下:

namespace ORM{public class FreeSqlOperater{/// <summary>/// 生产数据库操作对象/// </summary>public static IFreeSql pboxSql = null;static FreeSqlOperater(){pboxSql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, pboxConnstr).UseAutoSyncStructure(false) //不自动同步实体结构到数据库.Build(); //请务必定义成 Singleton 单例模式//省略记录日志,可自由发挥}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。