我对 MVC 和 SQL CE 比较陌生,而且我的主键字段似乎有问题。在我的数据库中,我有“用户”表,该表有一个名为“UserId”的主键。我创建了一个注册页面,它从中获取一些数据,然后应该将这些数据存储在数据库中。但是,当单击表单提交按钮时,检测到以下错误:
The column cannot be modified. [ Column name = UserId ]
这很奇怪,因为我没有尝试 UserId 值。下面的代码是我对注册操作的发布操作:
[HttpPost]
public ActionResult Registration(UserModel user)
{
if (ModelState.IsValid)
{
using (var db = new BlogDbContext())
{
var crypto = new SimpleCrypto.PBKDF2();
var encryptPassword = crypto.Compute(user.Password);
var newUser = db.Users.Create();
newUser.Username = user.Username;
newUser.FirstName = user.FirstName;
newUser.LastName = user.LastName;
newUser.Email = user.Email;
newUser.Password = encryptPassword;
newUser.PasswordSalt = crypto.Salt;
newUser.JoinDate = DateTime.Now;
db.Users.Add(newUser);
db.SaveChanges();
return RedirectToAction("Index", "User");
}
}
else
{
ModelState.AddModelError("", "Registration Failure");
}
return View();
}
当我最初在 VS 2012 中使用 SQL CE 创建数据库时,我将标识选项设置为“真”,相信这会自动增加主键列。我已经在 SO 上寻找过类似的问题,但是,大多数人认为包括某种 SQL 查询,我还没有深入研究过。任何帮助将不胜感激。