请教大家一个数据同步保存的方法

有一个比较纠结的需求,请大家帮忙看看怎么解决比较好一些。

用户点击一个保存按钮,系统会通过ajax向多个页面发出数据保存请求,但这多个页面并不执行真正的保存逻辑,只是会分析请求,找出对应的保存方法,然后这些保存方法需要在一个事务中执行。

请问这个大家这个要怎么处理,有没有现存的解决方案?
...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyumening 2014-03-31
  • 打赏
  • 举报
回复
引用 6 楼 wggfcusmq 的回复:
同步执行也不行吧。 这个需求就相当于,两次向服务器的请求一次处理。
把ajax请求保持同步的目的在于保证多次请求的执行顺序,这样才能收集到数据,执行事务时可以参照这个方法:
public void ExecuteSqlTran(string connectionString, Hashtable SQLStringlist)
         {
             using (SqlConnection con = new SqlConnection(connectionString))
             {
                 con.Open();
                 using (SqlTransaction trans = con.BeginTransaction())
                 {
                     SqlCommand cmd = new SqlCommand();
                     try
                     {
                         foreach (DictionaryEntry myDY in SQLStringlist)
                         {
                             string cmdText = myDY.Key.ToString();
                             SqlParameter[] parameter = (SqlParameter[])myDY.Value;
                             PrepareCommand(cmd, con, trans, cmdText, parameter);
                             int result = cmd.ExecuteNonQuery();
                             cmd.Parameters.Clear();


                         }

                         trans.Commit();
                     }
                     catch (Exception ex)
                     {
                         trans.Rollback();
                     }
                 }
             }
         }
通过ajax请求确定要执行的sql语句和sqlparameter参数 以键值对的形式存入到hashtable中,可以先存入到session中,然后在执行的时候转换为hashtable
zzyonepiece 2014-03-31
  • 打赏
  • 举报
回复
不能修改方法吗? 需求怎么连怎么处理都管?
  • 打赏
  • 举报
回复
同步执行也不行吧。 这个需求就相当于,两次向服务器的请求一次处理。
zzyonepiece 2014-03-31
  • 打赏
  • 举报
回复
ajax同步执行 把数据收集齐了,再用事务保存
  • 打赏
  • 举报
回复
请问大家我这样子处理行不行。 声明一个静态自定义类集合,用来接收所有的主从数据保存集合。这个自定义类包含 1,标识主表保存数据是否有收到(bool值) 2,标识从表保存数据是否有收到(bool值) 3,所有需要执行的sql(List集合) 如果1标识和2标识都为true,则执行3。 然后当前页面把所有需保存的主表数据形的sql保存到3中,并更新1的值, 从表的Ajax处理页面也把所有需保存的从表数据形成的的sql保存到3中,并更新2的值。 然后由这个自定义类来执行3中的所有集合。 不知道这个方法行不行的通,请指教。
  • 打赏
  • 举报
回复
这样也不行呢,数据没法传递啊。
wyumening 2014-03-27
  • 打赏
  • 举报
回复
可以这么做,点击保存时发出的多个ajax请求都设为同步的,在success回调函数中以字符串形式返回要执行的方法名称,把方法名称作为成员存储到一个数组中, 多个ajax请求都执行完了之后就把数组转为json格式的字符串,然后传递到ashx中,使用反射根据参数的方法名称在事务中执行多个方法

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧