为什么EF Core无法自动生成ID字段?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么EF Core无法自动生成ID字段?相关的知识,希望对你有一定的参考价值。
我是编程和开发的新手,正在学习,这是我的学习项目之一。我一直在尝试以各种方式解决此问题,但是当我尝试将新的Vehicle Model添加到特定的Vehicle Make时,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
我在做什么错?
答案
为什么要先将ID传递给create动作?您应该只有:
以上是关于为什么EF Core无法自动生成ID字段?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 ASP.NET Core 3.1 控制器会自动为从视图返回的 EF Core 模型分配 ID?
在 EF Core/自动生成 ID 中保存实体时将 IT 留空