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

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

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

 var dt = ORM.FreeSqlOperater.pboxSql.Ado.CommandFluent("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 SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '获取产品在当前工单下所有测试项状态结果'
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 单例模式

           //省略记录日志,可自由发挥
       }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeSql是一种高性能免费开源的ORM框架,可以用于在C#中操作关系型数据库。以下是在C#使用FreeSql的步骤: 1. 安装FreeSql NuGet包 在Visual Studio中打开NuGet包管理器,搜索FreeSql并安装最新版。 2. 配置数据库连接 在App.config或Web.config文件中添加数据库连接字符串,例如: ```xml <connectionStrings> <add name="MySql" connectionString="Server=localhost;Database=mydatabase;User=root;Password=123456;"/> </connectionStrings> ``` 3. 初始化FreeSql 在应用程序启动时,初始化FreeSql并注册数据提供程序,例如: ```csharp // 初始化FreeSql var connectionString = ConfigurationManager.ConnectionStrings["MySql"].ConnectionString; var fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, connectionString) .UseAutoSyncStructure(true) .Build(); // 注册数据提供程序 FreeSql.Provider.Register<CustomMySqlProvider>(FreeSql.DataType.MySql); ``` 4. 编写数据访问代码 使用FreeSql的实体类、仓储类和LINQ语句,编写数据访问代码,例如: ```csharp // 定义实体类 public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } // 定义仓储类 public class UserRepository : FreeSqlRepository<User> { public UserRepository() : base() { } public UserRepository(UnitOfWorkManager uowm) : base(uowm) { } } // 使用LINQ语句查询数据 var users = fsql.Select<User>().Where(u => u.Age > 18).ToList(); // 使用仓储类查询数据 var userRepo = new UserRepository(); var user = userRepo.Where(u => u.Name == "Tom").FirstOrDefault(); // 使用事务提交数据 using (var uow = fsql.CreateUnitOfWork()) { var userRepo = uow.GetRepository<User>(); userRepo.Insert(new User { Name = "Jack", Age = 20 }); userRepo.Update(new User { Id = 1, Name = "Tom", Age = 22 }); uow.Commit(); } ``` 以上就是在C#使用FreeSql的基本步骤,可以根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值