私は MVC と SQL CE に比較的慣れていないので、主キー フィールドに問題があるようです。データベース内に「User」テーブルがあり、そのテーブルには「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 を使用して最初にデータベースを作成したとき、id オプションを「true」に設定しました。これにより、主キー列が自動インクリメントされると信じていました。私は同様の質問について SO を調べましたが、大部分は、まだ掘り下げていない何らかの SQL クエリを含んでいることがわかりました。どんな助けでも大歓迎です。