当前位置: 首页>>代码示例>>C#>>正文


C# TransactionScope.VoteRollBack方法代码示例

本文整理汇总了C#中Castle.ActiveRecord.TransactionScope.VoteRollBack方法的典型用法代码示例。如果您正苦于以下问题:C# TransactionScope.VoteRollBack方法的具体用法?C# TransactionScope.VoteRollBack怎么用?C# TransactionScope.VoteRollBack使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Castle.ActiveRecord.TransactionScope的用法示例。


在下文中一共展示了TransactionScope.VoteRollBack方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ActiveRecordUsingTransactionScopeWithRollback

		public void ActiveRecordUsingTransactionScopeWithRollback()
		{
			InitModel();
			using (TransactionScope scope = new TransactionScope())
			{
				new SSAFEntity("example").Save();
				//Assert.AreEqual(1, SSAFEntity.FindAll().Length);
				scope.VoteRollBack();
			}
			Assert.AreEqual(0, SSAFEntity.FindAll().Length);
		}
开发者ID:sheefa,项目名称:Castle.ActiveRecord,代码行数:11,代码来源:SessionScopeAutoflushTestCase.cs

示例2: Registro

        public static void Registro()
        {
            foreach (var archivo in ActiveRecordBase<ConsumoDto>.FindAllByProperty("Procesado", false))
            {
                var documento = HelperPersona.GetPersona(
                    archivo.Cuit, archivo.TipoCliente,
                    archivo.RazonSocial, archivo.NombrePersona,
                    archivo.NroDocumento, archivo.Empresa);

                    var cliente = HelperCuenta.GetCuenta(
                        archivo.Cuit, archivo.NroDocumento, archivo.Empresa);

                    using (var transac = new TransactionScope())
                        try
                        {
                            var puntos = HelperPuntos.GetPuntos(archivo.Empresa, archivo.FechaHoraComprobante,
                                                            archivo.ImportePesosNetoImpuestos);

                            double acelerador = Double.Parse(archivo.Coeficiente) / 100;
                            puntos = acelerador > 0 ? acelerador * puntos : puntos;

                            var cuenta = new CuentaCorrienteDto
                            {
                                FechaCompra = archivo.FechaHoraComprobante.Date,
                                HoraCompra = DateTime.Now,
                                Key = new KeyCuenta
                                {
                                    CodEmpresa = archivo.Empresa,
                                    NumeroComprobante = archivo.NroComprobante
                                },
                                MontoCompra = archivo.ImportePesosNetoImpuestos,
                                Movimiento = puntos >= 0 ? HelperMovimiento.FindMovimiento("Suma De Puntos") : HelperMovimiento.FindMovimiento("Anulación Carga"),
                                NumeroDocumento = documento,
                                NumeroCuenta = cliente,
                                Puntos = puntos,
                                Sucursal = HelperSucursal.GetSucursal(),
                                Usuario = "web",
                                Programa = archivo.Programa,
                                Secretaria = archivo.Secretaria,
                                Coeficiente = archivo.Coeficiente
                            };
                            cuenta.Save();
                            transac.VoteCommit();
                        }
                        catch (Exception ex)
                        {
                            archivo.Error = ex.Message;
                            Log.Fatal(ex);
                            transac.VoteRollBack();
                        }
                    archivo.Procesado = true;
                    archivo.Save();
                } 
            }
开发者ID:galbarello,项目名称:Importador.Fidecard,代码行数:54,代码来源:WorkflowFidecard.cs

示例3: Edit

 public ActionResult Edit(int id, FormCollection form)
 {
     using (var transaction = new TransactionScope(TransactionMode.Inherits))
     {
         var original = Document.Find(id);
         if (TryUpdateModel(original))
         {
             original.Save();
             return RedirectToAction("Details", new { Id = id });
         }
         transaction.VoteRollBack();
         return View("Edit");
     }
 }
开发者ID:Yavari,项目名称:MyFavourites,代码行数:14,代码来源:DocumentsController.cs

示例4: btnSalvar_Click1

        /// <summary>
        /// evento disparado pelo botão salvar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSalvar_Click1(object sender, EventArgs e)
        {
            //bisca a lista de moradores selecionados
            List<int> lista = (List<int>)ViewState["moradores"];

            
            if (lista.Count > 0)
            {
                //abre a transação
                using (TransactionScope trans = new TransactionScope())
                {
                    try
                    {
                        //cria o template da mensagem
                        Domain.Model.Mensagem mensagem = new Domain.Model.Mensagem();
                        mensagem.Usuario = txtUsuario.Text;
                        mensagem.Detalhe = txtMensagem.Text;
                        mensagem.CreateAndFlush();


                        Usuario user = new Usuario();
                        MensagensDosUsuarios mensagemRelacionada;
                        //envia a mensagem para casa usuário selecionado
                        foreach (var item in lista)
                        {
                            user.Id = item;
                            mensagemRelacionada = new MensagensDosUsuarios();
                            mensagemRelacionada.Mensagem = mensagem;
                            mensagemRelacionada.Usuario = user;
                            mensagemRelacionada.CreateAndFlush();
                        }
                        //commit da transação
                        trans.VoteCommit();
                    }
                    catch (Exception ex)
                    {
                        //rollback da transação
                        trans.VoteRollBack();
                        //grava o erro em um log
                        Logger.Error(ex.Message);
                        base.ExibirMensagemErro();
                    }
                }
                base.ExibirMensagemSucesso(Funcionalidade.Mensagem, Operacao.Inclusao);
            }
            else
            {
                pnlMensagem.ExibirMensagem("Selecione os usuários para quem você vai enviar a mensagem");
            }
        }
开发者ID:felipealbuquerq,项目名称:Condominio,代码行数:55,代码来源:CadastroMensagem.aspx.cs

示例5: Create

        public ActionResult Create(Document document)
        {
            using(var transaction = new TransactionScope(TransactionMode.New))
            {
                try
                {
                    var user = _user.UserName();
                    var author = Models.User.FindByUsername(user);
                    author.Documents.Add(document);
                    author.Save();
                    return RedirectToAction("Index");
                }
                catch (NotFoundException ex)
                {
                    transaction.VoteRollBack();
                    ViewBag.ErrorMessage = String.Format("{0}. Please add the user first.", ex.Message);

                }
            }
            return View("Create");
        }
开发者ID:Yavari,项目名称:Training-wmqr,代码行数:21,代码来源:DocumentController.cs

示例6: EditarFuncionario

        /// <summary>
        /// funcionalidade de edição de um registro de funcionario
        /// </summary>
        /// <param name="id"></param>
        private void EditarFuncionario(int id)
        {
            //abre a transação
            using (TransactionScope trans = new TransactionScope())
            {

                try
                {
                    //consulta o funcionário pelo ID
                    Funcionario funcionario = Funcionario.FindByPrimaryKey(id);
                    //atribui os dados que estão na página
                    funcionario.Nome = Request.Form["ctl00$ContentPlaceHolder1$txtNome"]; //txtNome.Text.Trim();
                    funcionario.Endereco = Request.Form["ctl00$ContentPlaceHolder1$txtEndereco"]; //txtEndereco.Text.Trim();
                    funcionario.CPF = Request.Form["ctl00$ContentPlaceHolder1$txtCpf"]; //txtCpf.Text.Trim();
                    funcionario.RG = Request.Form["ctl00$ContentPlaceHolder1$txtRG"]; //txtRG.Text.Trim();
                    funcionario.Telefone = Request.Form["ctl00$ContentPlaceHolder1$txtTelefone"]; //txtTelefone.Text.Trim();
                    funcionario.DataNascimento = DateTime.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtDataNascimento"]);
                    funcionario.DataAdmissao = DateTime.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtDataContratacao"]);
                    funcionario.NumeroCarteiraTrabalho = Request.Form["ctl00$ContentPlaceHolder1$txtCarteiratrabalho"];// txtCarteiratrabalho.Text.Trim();
                    funcionario.Cargo = Request.Form["ctl00$ContentPlaceHolder1$txtCargo"];// txtCargo.Text.Trim();
                    //atualiza o funcionário
                    funcionario.UpdateAndFlush();
                    if (Request.Form["ctl00$ContentPlaceHolder1$txtSalario"].Trim() != string.Empty)
                    {
                        //verifica se tem salário e se houve alteração do valor
                        decimal valor = decimal.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtSalario"]);

                        if (funcionario.SalarioVigente != null)
                        {
                            if (funcionario.SalarioVigente.Valor != valor)
                            {
                                //atribui o valor da salário
                                funcionario.SalarioVigente.FinalVigencia = DateTime.Today;
                                funcionario.SalarioVigente.Vigente = false;
                                //atualiza o registro
                                funcionario.SalarioVigente.UpdateAndFlush();

                                if (valor != 0)
                                {
                                    Salario salario = new Salario();
                                    salario.InicioVigencia = DateTime.Today;
                                    salario.Vigente = true;
                                    salario.Valor = valor;
                                    salario.FuncionarioDoSalario = funcionario;
                                    salario.CreateAndFlush();
                                }
                            }
                        }
                    }
                    else
                    {
                        if (funcionario.SalarioVigente != null)
                        {
                            funcionario.SalarioVigente.FinalVigencia = DateTime.Today;
                            funcionario.SalarioVigente.Vigente = false;
                            funcionario.SalarioVigente.UpdateAndFlush();
                        }
                    }
                    //commit da transação
                    trans.VoteCommit();
                }
                catch (Exception ex)
                {
                    //rollback da transação
                    trans.VoteRollBack();
                    throw ex;
                }
                finally
                {
                    trans.Flush();
                }
            }
        }
开发者ID:felipealbuquerq,项目名称:Condominio,代码行数:77,代码来源:CadastrarFuncionario.aspx.cs

示例7: CadastrarNovoFuncionario

        /// <summary>
        /// grava um novo registro de funcionário
        /// </summary>
        private void CadastrarNovoFuncionario()
        {
            //abre a transação
            using (TransactionScope trans = new TransactionScope())
            {
                try
                {
                    //atribui os dados da página para o registro de funcionário e salva no banco
                    Funcionario funcionario = new Funcionario();
                    funcionario.Nome = txtNome.Text.Trim();
                    funcionario.Endereco = txtEndereco.Text.Trim();
                    funcionario.CPF = txtCpf.Text.Trim();
                    funcionario.RG = txtRG.Text.Trim();
                    funcionario.Telefone = txtTelefone.Text.Trim();
                    funcionario.DataNascimento = DateTime.Parse(txtDataNascimento.Text.Trim());
                    funcionario.DataAdmissao = DateTime.Parse(txtDataContratacao.Text.Trim());
                    funcionario.NumeroCarteiraTrabalho = txtCarteiratrabalho.Text.Trim();
                    funcionario.Cargo = txtCargo.Text.Trim();
                    funcionario.CreateAndFlush();

                    if (txtSalario.Text.Trim() != string.Empty)
                    {
                        decimal valor = decimal.Parse(txtSalario.Text.Trim());
                        if (valor != 0)
                        {
                            //cria o registro do salário
                            Salario salario = new Salario();
                            salario.InicioVigencia = DateTime.Parse(txtDataContratacao.Text.Trim());
                            salario.Vigente = true;
                            salario.Valor = valor;
                            salario.FuncionarioDoSalario = funcionario;
                            salario.CreateAndFlush();
                        }
                    }
                    //commit da transação
                    trans.VoteCommit();
                }
                catch (Exception ex)
                {
                    //rollback da transação
                    trans.VoteRollBack();
                    //sobe o erro para o método que o chamou, onde será gravado em um arquivo de texto
                    throw ex;
                }
                finally
                {
                    //fecha a transasção
                    trans.Flush();
                }
            }
        }
开发者ID:felipealbuquerq,项目名称:Condominio,代码行数:54,代码来源:CadastrarFuncionario.aspx.cs

示例8: MakeRendicion


//.........这里部分代码省略.........
                reporte.ContactoMail = sol.ContactoMail;
                reporte.ContactoTel = sol.ContactoTel;
                reporte.Descripcion = sol.Descripcion;

                reporte.FechaCreacion = DateTime.Now;
                reporte.FechaAprobacionCalidad = fechanula;
                reporte.FechaAprobacionTecnica = fechanula;
                reporte.FechaReprogramacion = fechanula;
                reporte.FechaSuspencion = fechanula;
                reporte.ProximaFechaInicio = fechanula;
                reporte.ProximaFechaFin = fechanula;
                reporte.Save();

                TipoSolicitud tipo = sol.Tipo;

                if (tipo.IdTiposolicitud == 1) ///Mantenimiento Preventivo
                {
                    SolicitudPreventivo Sol_Prev = SolicitudPreventivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg));
                    Sol_Prev.Id = 0;
                    Sol_Prev.IdSolicitud = reporte.Id_Solicitud;
                    Sol_Prev.SaveCopyAndFlush();

                    //copio las tareas
                    SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                    foreach (SolicitudTareas t in tt)
                    {
                        t.Id = 0; //para que guarde una copia
                        t.IdSolicitud = reporte.Id_Solicitud;
                        t.SaveCopyAndFlush();
                    }

                }

                if (tipo.IdTiposolicitud == 2) ///Mantenimiento Correctivo
                {
                    SolicitudCorrectivo Sol_Corr_original= SolicitudCorrectivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg));
                    Sol_Corr_original.Id = 0;
                    Sol_Corr_original.IdSolicitud = reporte.Id_Solicitud;
                    Sol_Corr_original.FechaResolucion = DateTime.Parse("1900-01-01");
                    Sol_Corr_original.SaveCopyAndFlush();

                }

                if (tipo.IdTiposolicitud == 6) ///Obras e Instalaciones
                {

                        SolicitudObra Sol_Obra = SolicitudObra.FindOne(Expression.Eq("IdSolicitud",idSolOrg));
                        Sol_Obra.Id = 0;
                        Sol_Obra.IdSolicitud = reporte.Id_Solicitud;
                        Sol_Obra.SaveCopy();

                }

                //copio las PErsonas
                SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                foreach (SolicitudRecursosEmpleados e in ee)
                {
                    e.Id = 0;
                    e.IdSolicitud = reporte.Id_Solicitud;
                    e.SaveCopy();
                }

                //copio los vehiculos
                SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                foreach (SolicitudRecursosVehiculos v in vv)
                {
                    v.Id = 0;
                    v.IdSolicitud = reporte.Id_Solicitud;
                    v.Horas = 0;
                    v.Km = 0;
                    v.SaveCopy();

                }
            }
            reporte.Save();
            //BiFactory.Sol = reporte;
        }
        catch (Exception)
        {
            _transaction.VoteRollBack();
            throw;
        }
        finally
        {
            _transaction.Dispose();

            switch (sol.IdTipoSolicitud)
            {
                case 1:
                    Response.Redirect("MantPreventivoRendicion.aspx");
                    break;
                case 2:
                    Response.Redirect("MantCorrectivoRendicion.aspx");
                    break;
                case 6:
                    Response.Redirect("Reporte_Obras.aspx");
                    break;
            }
        }
    }
开发者ID:alvaromejiaquiroz,项目名称:proyectomls,代码行数:101,代码来源:SolicitudesCambioEstado.aspx.cs

示例9: CrearClone

    private void CrearClone(int idSolOrg)
    {
        TransactionScope _transaction = new TransactionScope();
        try
        {
            //guarda la solicitud con la relacion
            Solicitud_Relacion SolRel = new Solicitud_Relacion();
            Solicitud sol;
            // antes de crear una copia verifico que no exista ya una
            SolRel = Solicitud_Relacion.FindOne(Expression.Eq("IdSolicitud_Relacionada", idSolOrg));
            if (SolRel == null)
            {
                SolRel = new Solicitud_Relacion();
                sol = Solicitud.GetById(idSolOrg);
                sol.Status = "Rendicion";
                sol.Id_Solicitud = 0;
                sol.SaveCopy();
                BiFactory.Sol = sol;
            }
            else
            {
                sol = Solicitud.GetById(SolRel.IdSolicitud);

                BiFactory.Sol = sol;
            }

            SolRel.IdSolicitud = sol.Id_Solicitud;
            SolRel.IdSolicitud_Relacionada = idSolOrg;
            SolRel.Save();

            //copio las tareas
            SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
            foreach (SolicitudTareas t in tt)
            {
                t.Id = 0; //para que guarde una copia
                t.IdSolicitud = sol.Id_Solicitud;
                t.SaveCopy();
            }

            //copio los agentes
            SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
            foreach (SolicitudRecursosEmpleados e in ee)
            {
                e.Id = 0;
                e.IdSolicitud = sol.Id_Solicitud;
                e.SaveCopy();
            }

            //copio los vehiculos
            SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
            foreach (SolicitudRecursosVehiculos v in vv)
            {
                v.Id = 0;
                v.IdSolicitud = sol.Id_Solicitud;
                v.SaveCopy();
            }

        }
        catch (Exception oEx)
        {
            _transaction.VoteRollBack();
            throw;
        }
        finally
        {
            _transaction.Dispose();

            Response.Redirect("./MantPreventivoRendicion.aspx");
        }
    }
开发者ID:alvaromejiaquiroz,项目名称:proyectomls,代码行数:70,代码来源:Solicitudes.aspx.cs

示例10: ToRender

        public void ToRender([ARDataBind("purchase",AutoLoadBehavior.Always)] Purchase purchase, string comment)
        {
            PurchaseStatusChange psc = new PurchaseStatusChange();
            psc.Created = DateTime.Now;
            psc.Purchase = purchase;
            psc.StatusOld =  purchase.Status;

            psc.StatusNew =Purchase.StatusPurchase.Entregado;
            psc.author = Context.CurrentUser.Identity.Name.ToLower ();

            purchase.DateDelivery = System.DateTime.Now;
            purchase.Status = Purchase.StatusPurchase.Entregado;

            using (TransactionScope t1 = new TransactionScope())
            {
                try {
                    purchase.Save ();
                    psc.Save ();

                    if (!string.IsNullOrEmpty(comment)) {
                        PurchaseComment pc = new PurchaseComment();
                        pc.Comment = comment;
                        pc.Created = DateTime.Now;
                        pc.Purchase = purchase;
                        pc.UserComment = Context.CurrentUser.Identity.Name.ToLower ();
                        pc.Save ();
                    }
                    t1.VoteCommit();
                    Flash["TypeMsg"] = "alert alert-success";
                    Flash["Msg"] = "<b>Ok, Solicitud " + purchase.Status +" entregada conforme...</b> ";
                } catch (Exception ex) {
                    t1.VoteRollBack();
                    if (!purchase.IsValid()) {
                        Flash["Msg"] = Utilities.GetValidationErrorText(purchase.ValidationErrorMessages);
                    } else {
                        Flash["Msg"] = "Error :" + ex.Message + " " + comment.Length.ToString();
                    }
                    RedirectToReferrer ();
                    return;
                }
            }

            PropertyBag["to"] = ConfigurationManager.AppSettings["mailadmin"];
            PropertyBag["cc"] = purchase.UserRequest + "@" + ConfigurationManager.AppSettings["defaultdomain"];
            PropertyBag["from"] = ConfigurationManager.AppSettings["mailadmin"];
            PropertyBag["subject"] = "[compras] Compra recepcionada "+ purchase.Status +" ID:" + purchase.Id.ToString ();
            PropertyBag["purchase"] = purchase;
            PropertyBag["purchaseproducts"] = purchase.PurchaseProducts;
            DeliverEmail(RenderMailMessage ("close",null,PropertyBag));

            RenderView ("approval");
        }
开发者ID:joil,项目名称:Compras,代码行数:52,代码来源:PurchaseController.cs

示例11: ToApprove

        public void ToApprove([ARDataBind("purchase",AutoLoadBehavior.Always)] Purchase purchase, string response, string comment)
        {
            PurchaseStatusChange psc = new PurchaseStatusChange();
            psc.Created = DateTime.Now;
            psc.Purchase = purchase;
            psc.StatusOld =  purchase.Status;

            switch (response) {
                case "approval" : {
                    purchase.Status = Purchase.StatusPurchase.Aprobada;
                    break;
                }
                case "reject" : {
                    purchase.Status = Purchase.StatusPurchase.Rechazada;
                    break;
                }
                default : {
                    Flash["TypeMsg"] = "alert alert-error";
                    Flash["Msg"] = "Error :" + response;
                    RedirectToReferrer ();
                    return;
                }
            }

            psc.StatusNew = purchase.Status;
            psc.author = Context.CurrentUser.Identity.Name.ToLower ();

            purchase.DateApproval = System.DateTime.Now;

            using (TransactionScope t1 = new TransactionScope())
            {
                try {

                    purchase.Save ();
                    psc.Save ();

                    if (!string.IsNullOrEmpty(comment)) {
                        PurchaseComment pc = new PurchaseComment();
                        pc.Comment = comment;
                        pc.Created = DateTime.Now;
                        pc.Purchase = purchase;
                        pc.UserComment = Context.CurrentUser.Identity.Name.ToLower ();
                        pc.Save ();
                    }
                    t1.VoteCommit();
                    Flash["TypeMsg"] = "alert alert-success";
                    Flash["Msg"] = "<b>Ok, Solicitud " + purchase.Status +" enviada a Compras</b> ";
                } catch (Exception ex) {
                    t1.VoteRollBack();
                    Flash["TypeMsg"] = "alert alert-error";
                    Flash["Msg"] = "Error :" + ex.Message;
                    RedirectToReferrer ();
                    return;
                }
            }

            PropertyBag["to"] = ConfigurationManager.AppSettings["mailadmin"];
            PropertyBag["cc"] = purchase.UserRequest + "@" + ConfigurationManager.AppSettings["defaultdomain"];
            PropertyBag["from"] = ConfigurationManager.AppSettings["mailadmin"];
            PropertyBag["subject"] = "[compras] Compra "+ purchase.Status +" ID:" + purchase.Id.ToString ();
            PropertyBag["purchase"] = purchase;
            PropertyBag["purchaseproducts"] = purchase.PurchaseProducts;
            DeliverEmail(RenderMailMessage ("toapprove",null,PropertyBag));

            if (purchase.Status == Purchase.StatusPurchase.Aprobada)
                RenderView ("approval");
            else
                RenderView ("reject");
        }
开发者ID:joil,项目名称:Compras,代码行数:69,代码来源:PurchaseController.cs

示例12: submit

        public void submit([ARDataBind("purchaseproducts")] PurchaseProduct[] purchaseproducts, int companyid, int userapproval, int familyproductid, string comment, HttpPostedFile uploadedFile)
        {
            Purchase purchase = new Purchase();
            purchase.UserRequest = Context.CurrentUser.Identity.Name.ToLower ();
            purchase.DateRequest = System.DateTime.Now;

            User user = (User) Context.Session["user"];
            purchase.MailRequest = user.Mail;
            purchase.NameUserRequest = user.Cn;

            if (companyid > 0)
                purchase.Company = Company.FindById(companyid);
            else {
                Flash["TypeMsg"] = "alert alert-error";
                Flash["Msg"] = "Seleccionar Compañia";
                RedirectToAction("new");
                return;
            }

            CompanyApprover ca = new CompanyApprover();
            if (userapproval > 0) {
                ca = CompanyApprover.FindById(userapproval);
                purchase.UserApproval = ca;
            } else {
                Flash["TypeMsg"] = "alert alert-error";
                Flash["Msg"] = "Seleccionar Aprobador";
                RedirectToAction("new");
                return;
            }

            if (familyproductid < 1) {
                Flash["TypeMsg"] = "alert alert-error";
                Flash["Msg"] = "Seleccionar Familia de Productos";
                RedirectToAction("new");
                return;
            }

            purchase.Status = Purchase.StatusPurchase.En_Aprobacion;

            using (TransactionScope t1 = new TransactionScope())
            {
                try {
                    //purchase.BudgetValue = Budget.FindByCompanyFamilyProduct(Company.FindById(companyid), FamilyProduct.FindById(familyproductid)).Value;
                    purchase.familyproduct = FamilyProduct.FindById(familyproductid);
                    purchase.Save ();
                    int cont = 0;
                    foreach(PurchaseProduct pp in purchaseproducts)
                    {
                        if (pp.Checked) {
                            pp.Purchase = purchase;
                            //pp.Product = Product.FindById(1);

                            if (!pp.IsValid()) {
                                Flash["TypeMsg"] = "alert alert-error";
                                Flash["Msg"] = Utilities.GetValidationErrorText(pp.ValidationErrorMessages);
                                t1.VoteRollBack ();
                                RedirectToAction("new");
                                return;
                            }
                            pp.Save();
                            cont++;
                        }
                    }

                    if (cont == 0) {
                        t1.VoteRollBack ();
                        Flash["TypeMsg"] = "alert alert-error";
                        Flash["Msg"] = "Seleccionar Productos";
                        RedirectToAction("new");
                        return;
                    }

                    if (!string.IsNullOrEmpty(comment)) {
                        PurchaseComment pc = new PurchaseComment();
                        pc.Comment = comment;
                        pc.Created = DateTime.Now;
                        pc.Purchase = purchase;
                        pc.UserComment = Context.CurrentUser.Identity.Name.ToLower ();

                        pc.Save ();
                    }

                    if (uploadedFile != null) {
                        PurchaseAttachment pa = new PurchaseAttachment();
                        pa.Purchase = purchase;
                        pa.Name = uploadedFile.FileName;
                        pa.Created = DateTime.Now;
                        pa.Path = Guid.NewGuid().ToString("N") + uploadedFile.FileName;
                        pa.Save ();
                        uploadedFile.SaveAs("../upload_compras/"+pa.Path);
                    }
                    t1.VoteCommit ();
                    Flash["TypeMsg"] = "alert alert-success";
                    Flash["Msg"] = "Solicitud generada con ID :<b>" + purchase.Id.ToString() + "</b>";
                }
                catch (Exception ex) {
                    t1.VoteRollBack ();
                    Flash["TypeMsg"] = "alert alert-error";
                    if (!purchase.IsValid()) {
                        Flash["Msg"] = Utilities.GetValidationErrorText(purchase.ValidationErrorMessages);
//.........这里部分代码省略.........
开发者ID:joil,项目名称:Compras,代码行数:101,代码来源:PurchaseController.cs


注:本文中的Castle.ActiveRecord.TransactionScope.VoteRollBack方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。