抛出异常:添加注册表

时间:2017-08-22 21:21:55

标签: c# asp.net entity-framework

我在c#中开发一个Web应用程序,它使用实体框架建立与sql server数据库的连接。一切正常但是当我试图添加一个实体时有一个奇怪的问题,当提交数据库中的更改时,程序会抛出异常,因此不能保存它们。

这是控制器代码

[HttpPost]
public ActionResult AddEditEntidadFinanciera(AddEditEntidadFinancieraViewModel model)
{
    try
    {
        using (var TransactionScope = new TransactionScope())
        {
            if (!ModelState.IsValid)
            {
                TryUpdateModel(model);
                PostMessage(MessageType.Error, i18n.ValidationStrings.DatosIncorrectos);
                return View(model);
            }

            sgTabEntidadFinanciera EntidadFinanciera;
            sgTabReglaLimite regla;
            if (model.EntidadFinancieraId.HasValue)
            {
                EntidadFinanciera = context.sgTabEntidadFinanciera.Find(model.EntidadFinancieraId.Value);
                regla = context.sgTabReglaLimite.FirstOrDefault(x => x.fk_sgTabReglaLimite_sgTabEntidadFinanciera == EntidadFinanciera.PK_EntidadFinanciera);
                if (regla == null)
                {
                    regla = new sgTabReglaLimite();
                    regla.sgTabEntidadFinanciera = EntidadFinanciera;
                    context.sgTabReglaLimite.Add(regla);
                }
            }
            else
            {
                EntidadFinanciera = new sgTabEntidadFinanciera();
                regla = new sgTabReglaLimite();
                regla.sgTabEntidadFinanciera = EntidadFinanciera;
                EntidadFinanciera.fk_sgTabEntidadFinanciera_sgTabEstado = ConstantHelpers.ESTADO_SISTEMA_ENTIDAD_ACTIVO;
                context.sgTabEntidadFinanciera.Add(EntidadFinanciera);
                context.sgTabReglaLimite.Add(regla);
            }

            EntidadFinanciera.vRazonSocial = model.RazonSocial;
            EntidadFinanciera.vDireccion = model.Direccion;
            EntidadFinanciera.vRuc = model.Ruc;
            EntidadFinanciera.vAcronimo = model.Acronimo;

            EntidadFinanciera.fk_sgTabEntidadFinanciera_sgTabServidor = 1;
            EntidadFinanciera.vFtp = model.Ftp;

            EntidadFinanciera.vPasswordFtp = model.PasswordFtp;
            EntidadFinanciera.vRazonSocial = model.RazonSocial;

            EntidadFinanciera.vUsuarioFtp = model.UsuarioFtp;
            EntidadFinanciera.vVcBin = model.VcBin;
            EntidadFinanciera.vVcIPBancaDesarrollo = model.VcIPBancaDesarrollo;
            EntidadFinanciera.vVcMascaraCuentaExterna = model.VcMascaraCuentaExterna;
            EntidadFinanciera.vVcMascaraCuentaInterna = model.VcMascaraCuentaInterna;
            EntidadFinanciera.iLimite = model.Limite;

            if (model.Imagen != null && !String.IsNullOrEmpty(model.Acronimo))
            {
                var fileName = Guid.NewGuid().ToString().Substring(0, 4) + Path.GetFileName(model.Imagen.FileName);
                var path = Path.Combine(Server.MapPath(ConstantHelpers.GetRutaImagenLogoEntidadFinanciera()), fileName);

                if (!String.IsNullOrEmpty(EntidadFinanciera.vRuta))
                {
                    System.IO.File.Delete(Server.MapPath(EntidadFinanciera.vRuta));
                    model.Imagen.SaveAs(path);
                    EntidadFinanciera.vRuta = ConstantHelpers.GetRutaImagenLogoEntidadFinanciera() + fileName;
                }

            }

            //Here is when the exception is thrown  

            context.SaveChanges();
            TransactionScope.Complete();
            PostMessage(MessageType.Success);
            return RedirectToAction("LstEntidadFinanciera");
        }
    }
    catch (Exception ex)
    {

        ExceptionGlobokas exceptionGlobokas = new ExceptionGlobokas(ex.Message, log4net.Core.Level.Alert, ex);
        InvalidarContext();
        PostMessage(MessageType.Error);
        model.Fill(CargarDatosContext(), model.EntidadFinancieraId);
        TryUpdateModel(model);
        return View(model);
    }
}

这是显示错误消息后的输出 Output

我已经检查过我的PK在我的数据库中启用了身份,我也验证了App.config和Web.config中的实体框架版本是否有问题,所以我不确定导致问题的原因。

EDIT 这是InnerException消息 InnerExceptionImage

这就是Stacktrace

  

at System.Data.Entity.Internal.InternalContext.SaveChanges()    在System.Data.Entity.Internal.LazyInternalContext.SaveChanges()     在System.Data.Entity.DbContext.SaveChanges()     位于D:\ TFS_HL \ Globokas.SG \ Globokas.SG \ Globokas.SG \ Controllers \ AdminController.cs:li> ne 2436

0 个答案:

没有答案
相关问题