gpt4 book ai didi

asp.net-mvc-3 - ASP.NET MVC/EF - 手动分配 ID (PK)

转载 作者:行者123 更新时间:2023-12-01 09:35:28 24 4
gpt4 key购买 nike

每当我尝试手动向表中插入新行时,都会出现以下错误:

Cannot insert the value NULL into column 'VehicleID', table 'TestServer.Vehicles'; column does not allow nulls. INSERT fails.
The statement has been terminated.

即使我在代码中设置了 VehicleID,如下所示:

List<Vehicles> vehicleList = context.Vehicles.ToList();

if(vehicleList.Count == 0)
{
vehicle.VehicleID = 1;
}
else
{
vehicle.VehicleID = vehicleList.Last().VehicleID + 1;
}

context.Vehicles.Add(vehicle);
context.SaveChanges();

// Other code...

我需要这样做的原因是因为在这个 Action 中,我实际上是在更新另一个模型,但我也想根据正在更新的另一个模型来更新我的车辆模型

我的 VehicleID 属性设置了 [Key] 数据注释,这可能是原因吗?

最佳答案

一个可能的原因是您没有将模型中的关键属性标记为不是数据库生成的。您可以使用数据注释来做到这一点...

public class Vehicle
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int VehicleID { get; set; }

//...
}

...或使用 Fluent API:

modelBuilder.Entity<Vehicle>()
.Property(v => v.VehicleID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

对于整数键,EF 默认假定该列是数据库中自动生成的标识,因此不会将 ID 的值发送到服务器。如果该列未在数据库中自动生成,则会出现错误。

关于asp.net-mvc-3 - ASP.NET MVC/EF - 手动分配 ID (PK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8909787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com