我在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