我在数据库中有表:
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
答案 0 :(得分:0)
加密后的密码长度超过了您在表格中定义的密码长度,即vPassword nvarchar(50) NOT NULL
哪个不那么你需要相应地改变它!!