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

LinqToSql C#和自动递增标识字段,c#,asp.net-mvc-4,linq-to-sql,identifier,ssms,C#,Asp.net Mvc 4,Linq To Sql,Identifier,Ssms,在LINQtoSQL的帮助下,尝试将新行插入SQL Server数据库时遇到了一个问题 代码如下: [HttpPost] public ActionResult QuestionsAnswers(UserQuestion userQuestion) { if (ModelState.IsValid) { var newUserQuestion = new QuestionAnswer(); newUserQuest

在LINQtoSQL的帮助下,尝试将新行插入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
(其中只有
From
Question
)时出错,QuestionAnswer有以下列:
Id、From、Question、Answer
(此列可为空):

当identity\u insert设置为OFF时,无法在表“QuestionAnswer”中为identity列插入显式值

我认为LINQtoSQL应该自己处理标识自动增量列。现在我想,我错了

关于如何正确设置此对象Id的任何线索


提前感谢。

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

您需要设置一个字段(通常是一个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.

当我创建数据库时,我已经将“Is Identity”设置为“是”,并且它自动递增。@Kamilius你确定它仍然是这样吗?请核实一下,因为这几乎不可能是真的。在这里你是对的。我已经在SQL Management Studio中进行了更改,但没有“更新”生成的类。我不能这样做,因为DB中的字段“Id”不是可为null的int类型,int类型的模型字段(不能接收值“null”)也是可为null的int类型