我是编程和开发的新手,正在学习,这是我的学习项目之一。我一直在尝试以各种方式解决此问题,但是当我尝试将新的“车辆模型”添加到特定的“车辆制造商”时,“ ID”列不会自动递增,而是会尝试覆盖第一个ID。
我尝试处理数据批注,我认为这是正确的,我尝试通过查询将值手动添加到数据库,并且效果很好。试图删除数据库和迁移,再次更改注释,但没有任何效果。我唯一会做错的是代码本身,可能在控制器或服务层中的某个地方。
VehicleMake类别:
public class VehicleMake
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[Display(Name = "Make Name")]
public string Name { get; set; }
[Required]
[Display(Name = "Abbreviation")]
public string Abrv { get; set; }
[Display(Name = "Models")]
public virtual IEnumerable<VehicleModel> VehicleModels { get; set; }
}
VehicleModel类:
public class VehicleModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int MakeId { get; set; }
public virtual VehicleMake Make { get; set; }
[Required]
[Display(Name = "Model Name")]
public string Name { get; set; }
[Required]
[Display(Name="Abbreviation")]
public string Abrv { get; set; }
}
车辆模型控制器:
[HttpPost]
public IActionResult Create(int Id, VehicleModel newModel)
{
if (ModelState.IsValid)
{
newModel.MakeId = Id;
_model.Add(newModel);
return RedirectToAction("Index");
}
return View(newModel);
}
添加新模型的服务:
public void Add(VehicleModel newModel)
{
_context.Add(newModel);
_context.SaveChanges();
}
这是它试图添加到数据库中的值,当然会给出错误 https://imgur.com/pL9EruF
我在做什么错了?
答案 0 :(得分:0)
为什么首先要将ID传递给create动作?您应该拥有:
RemoteSessionSettings
注意:
[HttpPost]
public async Task<IActionResult> Create(VehicleModel newModel)
{
if (!ModelState.IsValid)
return View(newModel);
_context.Add(newModel);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
和Add
的调用,就可以了。