Freesql中使用存储过程

6 篇文章 3 订阅
4 篇文章 0 订阅

Freesql中使用存储过程

public string SqlStoredProcedure(string guid, string Userid, string Erpin_id, string Flag_force)
        {
            DbParameter out1 = null; DbParameter out2 = null; DbParameter out3 = null; DbParameter out4 = null; DbParameter out5 = null; DbParameter out6 = null;
            DbParameter out7 = null; DbParameter out8 = null; DbParameter out9 = null; DbParameter out10 = null; DbParameter out11 = null; DbParameter out12 = null;
            DbParameter out13 = null; DbParameter out14 = null; DbParameter out15 = null; DbParameter out16 = null; DbParameter out17 = null; DbParameter out18 = null;
            DbParameter out19 = null; DbParameter out20 = null; DbParameter reason = null; 
            var sadasd2=_fsql.Ado.CommandFluent("sp_rf_in_close_ordno")
                .CommandType(CommandType.StoredProcedure)
                .CommandTimeout(60)

                .WithParameter("@guid", guid)
                .WithParameter("@in1", Userid)
                .WithParameter("@in2", Erpin_id)
                .WithParameter("@in3", Flag_force)
                .WithParameter("@in4", null)
                .WithParameter("@in5", null)
                .WithParameter("@in6", null)
                .WithParameter("@in7", null)
                .WithParameter("@in8", null)
                .WithParameter("@in9", null)
                .WithParameter("@in10", null)
                .WithParameter("@out1", 500, p =>
                {
                    out1 = p; //Output 参数
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out2", 500, p =>
                {
                    out2 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out3", 500, p =>
                {
                     out3 = p;
                     p.DbType = DbType.String;
                     p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out4", 500, p =>
                {
                    out4 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out5", 500, p =>
                {
                    out5 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out6", 500, p => 
                {
                    out6 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out7", 500, p => {
                    out7 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out8", 500, p =>
                {
                    out8 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out9", 500, p =>
                {
                    out9 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out10", 500, p =>
                {
                    out10 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out11", 500, p => 
                {
                    out11 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out12", 500, p =>
                {
                    out12 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out13", 500, p =>
                {
                    out13 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out14", 500, p =>
                {
                    out14 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out15", 500, p =>
                {
                    out15 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out16", 500, p =>
                {
                    out16 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out17", 500, p =>
                {
                    out17 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out18", 500, p =>
                {
                    out18 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out19", 500, p =>
                {
                    out19 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@out20", 500, p =>
                {
                    out20 = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .WithParameter("@reason", 500, p=> 
                {
                    reason = p;
                    p.DbType = DbType.String;
                    p.Direction = ParameterDirection.Output;
                })
                .ExecuteDataTable();
            var fanhui = reason.Value;
            return (string)fanhui;
        }

拿代码块来说一下是怎么样用的,这个在Freesql的官网上也有写用法。
官方实例:

DbParameter p2 = null;
fsql.Ado.CommandFluent("dbo.GetICMaxNum")
    .CommandType(CommandType.StoredProcedure)
    .CommandTimeout(60)

    .WithParameter("TableName", "tb1")
    .WithParameter("FInterID", null, p =>
    {
        //(p as OracleParameter).OracleType = ...;
        p2 = p; //Output 参数
        p.DbType = DbType.Int32;
        p.Direction = ParameterDirection.Output;
    })
    .ExecuteNonQuery(); //.Query<T>() 或者 .ExecuteDataTable() 或者 ...

Console.WriteLine(p2.Value);

上面是输入参数,我这边是通过传值来当输入参数的,这个没什么问题。当时我是在百度上找的代码,输出参数并没有得到接收,所以一直在报错,后来翻了一下官网找到了上述写法。
这边有个问题需要注意一下,我们这边接收存储过程的返回值,是个object类型,取不到报错信息提示,于是我这边直接改动的存储过程,在所有的报错提示前都加了序号,然后在后端代码里对取到的序号进行判断。

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
发出的红包

打赏作者

晚风偷吻云朵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值