【问题标题】:ASP.NET MVC4 Entity Framework db.SaveChanges() Condition not workingASP.NET MVC4 实体框架 db.SaveChanges() 条件不起作用
【发布时间】:2015-08-07 17:42:41
【问题描述】:

我目前正在开发一个带有实体框架的 ASP.NET MVC4 项目。 这是问题所在,我希望我的代码发回一个不同的 Json 对象 取决于 Db.savechanges 是否有效!

我一直在用控制台进行一些调试,似乎我总是从我的 IF 的 else 部分得到错误,即使条件正常,它也永远不会进入实际状态。很难解释,但用代码很容易理解,所以就到这里了。

来自我的控制器的代码将 True 或 false json 对象发送到我的 javascript

   [HttpPost]
    public ActionResult Enregistrer_Inscription(InscriptionPost inscPost)
    {

            NoirEtOrEntities db = new NoirEtOrEntities();
            Inscription insc = new Inscription()
            {
                inscriptionNom = inscPost.nomJ,
                inscriptionPrenom = inscPost.prenomJ,
                inscriptionDateNaissance = inscPost.DateNaissance,
                inscriptionDate = DateTime.Now,
                inscriptionCategory = inscPost.Category,
                inscriptionDivision = inscPost.Division,
                inscriptionStatut = inscPost.Statut,
                inscriptionTaille = inscPost.Taille,
                inscriptionSexe = inscPost.Sexe,
                inscriptionEcole = inscPost.Ecole,
                inscriptionAgeSept = inscPost.AgeSept,
                inscriptionNiveauScolaire = inscPost.NiveauScolaire,
                inscriptionAdresseJ = inscPost.AdresseJ,
                inscriptionVilleJ = inscPost.VilleJ,
                inscriptionCodePostalJ = inscPost.CodePostalJ,
                inscriptionCourrielJ = inscPost.CourrielJ,
                inscriptionTelephoneJ = inscPost.TelephoneJ,
                inscriptionNomP = inscPost.nomP,
                inscriptionPrenomP = inscPost.prenomP,
                inscriptionAdresseP = inscPost.AdresseP,
                inscriptionVilleP = inscPost.VilleP,
                inscriptionCodePostalP = inscPost.CodePostalP,
                inscriptionCourrielP = inscPost.CourrielP,
                inscriptionTelephoneP = inscPost.TelephoneP,
                inscriptionNomM = inscPost.nomM,
                inscriptionPrenomM = inscPost.prenomM,
                inscriptionAdresseM = inscPost.AdresseM,
                inscriptionVilleM = inscPost.VilleM,
                inscriptionCodePostalM = inscPost.CodePostalM,
                inscriptionCourrielM = inscPost.CourrielM,
                inscriptionTelephoneM = inscPost.TelephoneM,
                inscriptionNotes = inscPost.Notes,

            };
        try
        {
            db.Inscription.Add(insc);            
            db.SaveChanges();
            if (db.SaveChanges() > 0)
            {
                return Json(new { success = true });
            }
            else
            {
                return Json(new { success = false }); 
            }

        }            
        catch (System.Data.Entity.Validation.DbEntityValidationException ex)
        {
            return Json(new { success = false });
        }                       
    }
} 

这是我的 Jquery 代码

 success: function (data) {
                console.log(data);
                console.log(data.success);
                if (data.success == true) {
                    console.log("succ");
                    console.log(data);
                    alertify.success("Formulaire recu avec succès", 5000);
                    Vider_Champs()
                }
                else {
                    console.log("nope");
                    console.log(data);
                    alertify.error("Le formulaire comporte des erreurs", 5000);
                }                       
            },
            error: function () {
                console.log("error");
                alertify.error("Le formulaire comporte des erreurs", 5000);
            }
        });
    }

所以问题出在代码上:if (db.SaveChanges() > 0) 感谢您的帮助

【问题讨论】:

    标签: c# json entity-framework asp.net-mvc-4


    【解决方案1】:

    问题是您调用了两次db.SaveChanges()

    db.SaveChanges();              // save changes to database
    if (db.SaveChanges() > 0)      // save changes once again
    {
        return Json(new { success = true });
    }
    

    第一次调用该方法时,更改会保存下来,下次调用它时就没有什么可保存的了。相反,将调用结果保存在变量中并在下一行中使用它:

    int result = db.SaveChanges();
    if (result > 0)
    {
        return Json(new { success = true });
    }
    

    【讨论】:

    • 刚试了一下,还是不行!仍然没有进入 IF,它会越过它并从 else 中返回 false
    • @JeffLA 你确定它在 else 语句中运行吗?另一种返回 false 的情况是在 save 方法调用期间抛出DbEntityValidationException
    • 你的权利!就是因为这个例外!但我真的不明白
    • 发布此 DbEntityValidationException 的详细信息
    • 您的“铭文”类型可能有问题,请确保任何列值与模型不匹配。另请参阅异常详细信息,以便更好地猜测此“铭文”有什么问题' 字段。
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2011-04-28
    • 2017-05-09
    相关资源
    最近更新 更多