我正在尝试将新数据插入到我的一个表中,但我收到了身份插入错误,即使我从未真正设置过 ID。
我可以用创可贴修复此问题,但我想了解为什么会发生这种情况以及最佳实践是什么
如果我在添加到 DbContext 之前将 Id 设置为 0,它可以正常工作,但我根本不明白我的 Id 是在哪里设置的。
这是我的模型:
public class Question : BaseModel
{
public QuestionGroup QuestionGroup { get; set; }
public int QuestionGroupId { get; set; }
[Display(Name ="Question Text")]
public string QuestionText { get; set; }
public string Type { get; set; }}
public class BaseModel
{
public int Id { get; set; }
[Display(AutoGenerateField = false), JsonIgnore]
public DateTime CreatedAt { get; set; }
[Display(AutoGenerateField = false), JsonIgnore]
public DateTime UpdatedAt { get; set; }
}
这是我的相关控制器代码:(如果我取消注释将 Id 设置为 0,则可以正常工作)
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Question question)
{
//question.Id = 0;
if (ModelState.IsValid)
{
_context.Add(question);
await _context.SaveChangesAsync();
return RedirectToAction("Details", "QuestionGroups", new { id =
question.QuestionGroupId });
}
await PopulateId(question.QuestionGroupId);
return View(question);
}
这是我的表格:
<div class="col-md-4">
<form asp-action="Create" enctype="multipart/form-data">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input asp-for="QuestionGroupId" type="hidden"
value="@ViewBag.QuestionGroupId"/>
<div class="form-group">
<label asp-for="QuestionText" class="control-label"></label>
<input asp-for="QuestionText" class="form-control" />
<span asp-validation-for="QuestionText" class="text-danger></span>
</div>
这是有道理的,因为当我调试时,我看到的是:
慕神8447489
蝴蝶刀刀
繁花如伊
相关分类