LinqToSql C#和自动递增标识字段

本文关键字:标识 字段 LinqToSql | 更新日期: 2023-09-27 18:20:42

我在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(其中只有FromQuestion)时,我遇到了一个错误,QuestionAnswer有列:Id, From, Question, Answer(这个可以为null):

当identity_insert设置为OFF时,无法在表"QuestionAnswer"中插入标识列的显式值。

我认为Linq-to-SQL应该自己处理Identity自动递增列。现在我想,我错了。。。

关于如何正确设置此对象的Id,有什么线索吗?

提前谢谢。

LinqToSql C#和自动递增标识字段

您需要设置一个字段(通常是id字段),以便在数据库中具有标识。林克不会自动为你做这件事。您可以通过以下方式完成:

 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.

尝试将id显式设置为null。它可能被隐式地设置为0。