我尝试在数据库中保存加密字段时出现Sql server错误(DbEntityValidationException)

时间:2017-07-10 09:32:34

标签: c# asp.net sql-server asp.net-mvc encryption

我在数据库中有表:

create table USERS
(
    iIdUsers int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    vNickName nvarchar(50) NOT NULL,    
    vPassword nvarchar(50) NOT NULL,
    vEmail nvarchar(50) NOT NULL
);

我在项目中有edmx数据库。我加密密码字段并尝试将其保存在数据库中。之后我有例外:

  

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

     

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

没有加密,一切都很好。谁知道它的问题是什么?

我在数据库中添加新用户的代码:

public class RegistrationController : Controller
{
    [HttpPost]
    public ActionResult AddOrEdit(USERS userModel)
    {
        using (NarkomDataBase dbModel = new NarkomDataBase())
        {
            PasswordEncryption encryption = new PasswordEncryption();
            Helper helper = new Helper();

            userModel.vPassword = Helper.ComputeHash(userModel.vPassword, "SHA512", null);

            if (dbModel.USERS.Any(x => x.vNickName == userModel.vNickName))
            {
                ViewBag.DublicateMessage = "Пользователь уже существует!";
                return View("~/Views/home/AddOrEdit.cshtml", userModel);
            }

            dbModel.USERS.Add(userModel);
            dbModel.SaveChanges();
        }

        ModelState.Clear();
        ViewBag.SuccessMessage = "Регистрация прошла успешно!";

        return View("~/Views/home/AddOrEdit.cshtml", new USERS());
    }
}

我有两个加密类。 帮手和密码加密。

也许sql server对加密数据有限制?

加密前的密码:123

密码加密:2ecggZEcNQ4qIMIHub8SJHQZ21aVzLRBBHG28v / YIFfWlHZjYNT + PTm4Jyes0Gh6GQIaAkenhMNsL / kx4C8 + O6wGN1L2

1 个答案:

答案 0 :(得分:0)

加密后的密码长度超过了您在表格中定义的密码长度,即vPassword nvarchar(50) NOT NULL

哪个不那么你需要相应地改变它!!