1

私は 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 クエリを含んでいることがわかりました。どんな助けでも大歓迎です。

4

0 に答える 0