日期:2014-05-16  浏览次数:20429 次

请教大家一个数据同步保存的方法
有一个比较纠结的需求,请大家帮忙看看怎么解决比较好一些。

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

请问这个大家这个要怎么处理,有没有现存的解决方案?
------解决方案--------------------
可以这么做,点击保存时发出的多个ajax请求都设为同步的,在success回调函数中以字符串形式返回要执行的方法名称,把方法名称作为成员存储到一个数组中,
多个ajax请求都执行完了之后就把数组转为json格式的字符串,然后传递到ashx中,使用反射根据参数的方法名称在事务中执行多个方法
------解决方案--------------------
ajax同步执行
把数据收集齐了,再用事务保存
------解决方案--------------------
不能修改方法吗?

需求怎么连怎么处理都管?


------解决方案--------------------
引用:
同步执行也不行吧。

这个需求就相当于,两次向服务器的请求一次处理。

把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();


                         }

          &nb