用存储过程加UpdateDaset方法批量插入Dataset数据

        public bool SaveSMSMessage(SMSBatch smsBatch, DataSet smsMessages)
        {
            //using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Suppress))
            //{
            foreach (DataRow row in smsMessages.Tables[0].Rows)
                row.SetModified();

                SqlDatabase db = new SqlDatabase(this.ConsultantsConnString);

                string sqlCmd = "EXEC cn.SMSSaveSMSMessage @SMSBatchID, @SMSTypeID, @SubsidiaryID, @ContactID, @Message, @PhoneNumber";

                using (SqlCommand cmd = db.GetSqlStringCommand(sqlCmd) as SqlCommand)
                {
                    cmd.CommandTimeout = 600;

                    cmd.Parameters.AddWithValue("@SMSBatchID", smsBatch.SMSBatchID);
                    cmd.Parameters.AddWithValue("@SMSTypeID", smsBatch.SMSType.SMSTypeID);
                    cmd.Parameters.AddWithValue("@SubsidiaryID", smsBatch.SMSType.SubsidiaryID);
                    db.AddInParameter(cmd, "@ContactID", DbType.Int64, "ContactID", DataRowVersion.Current);
                    db.AddInParameter(cmd, "@Message", DbType.String, "Message", DataRowVersion.Current);

                    if (smsMessages.Tables[0].Columns.Contains("PhoneNumber"))
                    {
                        db.AddInParameter(cmd, "@PhoneNumber", DbType.String, "PhoneNumber", DataRowVersion.Current);
                    }
                    else
                    {
                        db.AddInParameter(cmd, "@PhoneNumber", DbType.String, DBNull.Value);
                    }

                    int rowsEffected = db.UpdateDataSet(smsMessages, "SMSMessage", null, cmd, null, UpdateBehavior.Transactional);

                    sqlCmd = rowsEffected.ToString();
                }

            //    ts.Complete();
            //}

            return true;
        }

posted @ 2013-01-15 10:22  XFeng信息科技工作室  阅读(258)  评论(0编辑  收藏  举报