0

LINQ to SQL を使用して SQL Server データベースに新しい行を挿入しようとしているときに問題が発生しました。

コードは次のとおりです。

[HttpPost]
public ActionResult QuestionsAnswers(UserQuestion userQuestion)
{
        if (ModelState.IsValid)
        {
            var newUserQuestion = new QuestionAnswer();

            newUserQuestion.Question = userQuestion.Question;
            newUserQuestion.From = userQuestion.From;

            ViewBag.QuestionSent = true;
            QuestionAnswerDb.QuestionAnswers.InsertOnSubmit(newUserQuestion);
            QuestionAnswerDb.SubmitChanges();
            return View(AnswersList);
        }

        ViewBag.QuestionSent = false;
        ViewBag.From = userQuestion.From;
        ViewBag.Question = userQuestion.Question;
        return View(AnswersList);
}

そして、新しいものを「提出」しようとしているときにエラーが発生しましたUserQuestion(それには and しかFromありませQuestionん)、QuestionAnswerには列があります:(Id, From, Question, Answerこれはnull可能です):

IDENTITY_INSERT が OFF に設定されている場合、テーブル 'QuestionAnswer' の ID 列に明示的な値を挿入できません。

Linq-to-SQL は Identity 自動インクリメント列を単独で処理する必要があると考えました。今思えば、自分が間違っていた…

このオブジェクトの Id を適切に設定する方法についての手がかりはありますか?

前もって感謝します。

4

2 に答える 2

1

id を明示的に null に設定してみてください。おそらく暗黙的に 0 に設定されています。

于 2013-07-02T18:47:02.420 に答える
1

データベースに ID を設定するには、フィールド (通常は id フィールド) を設定する必要があります。Linq はこれを自動的に行いません。これは次の方法で実行できます。

 Open your table in Sql Server Management Studio
 right click Design
 Open up Column Properties under the field you want to set as your identity(ID)
 Expand Identity Specification
 Set (Is Identity) to Yes.
于 2013-07-02T18:47:10.587 に答える