ASP.NET MVC4实体框架db.SaveChanges()条件不起作用

时间:2015-08-07 17:42:42

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

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

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

来自我的控制器的代码将真假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) 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

问题是您要拨打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 });
}