dapper 批量新增 的坑(性能)

今天 对系统进行了下优化,涉及3张表,差不多每张300条数据,一起保存,界面保存到 重新加载出来,花了 6到8秒,速度太慢了。经过排查 最后定位问题:发现 Dapper自带内部集合插入,性能着实不咋样,网上找了下文章,最后优化了下 ,性能明细提高。批量新增 性能对比,网上可以去查看下这个篇文章:https://www.cnblogs.com/wwg1990/p/10362667.html,总结的挺好,值得好好学习。不多说 直接上代码吧,供参考学习。1. 批量新增封装: ..
摘要由CSDN通过智能技术生成

 今天 对系统进行了下优化,涉及3张表,差不多每张300条数据,一起保存,界面保存到 重新加载出来,花了 6到8秒,速度太慢了。

经过排查 最后定位问题:发现 Dapper自带内部集合插入,性能着实不咋样,网上找了下文章,最后优化了下 ,性能明细提高。

批量新增 性能对比,网上可以去查看下这个篇文章:https://www.cnblogs.com/wwg1990/p/10362667.html ,总结的挺好,值得好好学习。

不多说 直接上代码吧,供参考学习。

1. 批量新增封装:

        public int BatchCreateNew(List<Evaluation_SurveyData_detailsEntity> list)
        {
            int insertedRows = -1;
            try
            {
                //自带内部集合 新增
                //string sql = BaseMethodUtility.GetCreateSql(list);
                //insertedRows = _Respository.ExecuteNonQueryAsync(sql, list).Result;
                //优化后 新增
                string sqlnew = BaseMethodUtility.GetRoutineCreateSql(list);
                insertedRows = _Respository.ExecuteNonQueryAsync(sqlnew, null).Result;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return insertedRows;
        }

2. 核心封装:

    public class BaseMethodUtility
    {
        /// <summary>
        /// Dapper自带内部集合插
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中使用Dapper进行事务批量操作,可以按照以下步骤进行: 1. 开启事务:使用Dapper的Transaction属性可以开启事务。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { // 执行批量操作 transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 2. 执行批量操作:使用Dapper的Execute方法可以执行批量操作。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { string sql = "INSERT INTO MyTable (Column1, Column2) VALUES (@Column1, @Column2)"; List<MyData> data = new List<MyData>(); // 添加数据到data列表中 cn.Execute(sql, data, transaction); transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 其中,MyData是一个自定义的数据模型,包含要插入到数据库中的数据。 3. 使用SqlBulkCopy进行批量操作:Dapper也支持使用SqlBulkCopy进行批量操作,可以提高批量操作的效率。 ``` using (var cn = new SqlConnection(connectionString)) { cn.Open(); using (var transaction = cn.BeginTransaction()) { try { using (var bulkCopy = new SqlBulkCopy(cn, SqlBulkCopyOptions.Default, transaction)) { bulkCopy.DestinationTableName = "MyTable"; DataTable table = new DataTable(); // 添加数据到table中 bulkCopy.WriteToServer(table); } transaction.Commit(); } catch { transaction.Rollback(); throw; } } } ``` 以上就是使用Dapper进行事务批量操作的基本步骤。需要注意的是,批量操作可能会影响数据库性能,应该在适当的时候进行优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值