从表单插入数据库时​​出错

时间:2015-02-15 17:48:11

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

我有一个注册表单,当用户注册时,他/她的信息会保存到数据库中。有了我的代码,我得到了这个

  

类型的例外   ' System.Data.Entity.Validation.DbEntityValidationException'发生了   在login.dll中但未在用户代码中处理

     

其他信息:一个或多个实体的验证失败。   请参阅' EntityValidationErrors'物业详情。

最后一行的错误。当我检查保存到变量中的内容时,除了从表单中获取的内容之外,所有内容都为null。

实施例。 userType = null,IPAddress = null,CreatedDate = 1/1/0001 12:00:00 AM, 但用户名,电子邮件等具有表格中的正确值。

public ActionResult Register(Models.User user)
{
    try
    {
        if (ModelState.IsValid)
        {
            using (var db = new login.Models.ShareNotesEntities())
            {
                var crypto = new SimpleCrypto.PBKDF2();
                var encrypPass = crypto.Compute(user.Password);
                var newUser = db.Users.Create();

                newUser.Username = user.Username;
                newUser.Email = user.Email;
                newUser.Password = encrypPass;
                newUser.PasswordSalt = crypto.Salt;
                newUser.Grade = user.Grade;
                newUser.UserType = "User";
                newUser.CreatedDate = DateTime.Now;
                newUser.IsActive = true;
                newUser.IPAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??Request.ServerVariables["REMOTE_ADDR"];

                db.Users.Add(newUser);
                db.SaveChanges();

                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "sdfasdf");
        }
    }
    catch (DbEntityValidationException e)
    {
        foreach (var eve in e.EntityValidationErrors)
        {
            Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State);
            foreach (var ve in eve.ValidationErrors)
            {
                Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
            }
        }
        throw;
    }
    return View();
} -----> ERROR HERE

0 个答案:

没有答案