C#,BS项目,MVC框架,SQL2008数据库,表结构是3个表,主A从B再从C,数据量关联比例大概是1:10:100
数据修改保存的时候,主表A需按某条件筛选出来进行更新,然后逐个更新从表B里的数据,再按满足条件更新C里的数据
保存结果:等待时间长,卡死,报错
描述:现在A的数据量大概400条左右,在修改A的时候加了事务TransactionScope,结果是更新了50条左右,日志里报错,【与当前连接相关联的事务已经完成,但尚未释放。必须先释放该事务,然后才能使用该连接来执行 SQL 语句。】去掉事务,能更新300条,等待时间过长,页面卡死
请有经验的大佬给个思路,这种多表关联的数据保存,如何做(主表A的数据未来远不止400)
检查用的是不是同一个连接(connection)
一般这样使用:
using (SqlConnection conn=new SqlConnection("****"))
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
//更新操作
transaction.Commit();
}
页面卡,后台可以使用async结合await进行异步操作
https://blog.csdn.net/newbie_xymt/article/details/81777675
搞个线程专门给sql操作吧先