我在使用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
(其中只包含From
和Question
)时收到错误,QuestionAnswer有列:Id, From, Question, Answer
(这个是可空的):
当IDENTITY_INSERT设置为OFF时,无法在表'QuestionAnswer'中为标识列插入显式值。
我认为Linq-to-SQL应该自己处理Identity autoincrement列。现在我想,我错了......
有关如何正确设置此对象的ID的任何线索?
提前致谢。
答案 0 :(得分:1)
您需要将字段(通常是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.
答案 1 :(得分:0)
尝试将id设置为null。它可能被隐含地设置为0。