Cal*_*ass 3 entity-framework-4 asp.net-mvc-3
当我尝试手动向表中插入新行时,出现以下错误:
Cannot insert the value NULL into column 'VehicleID', table 'TestServer.Vehicles'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
即使我在我的代码中设置了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...
Run Code Online (Sandbox Code Playgroud)
我需要这样做的原因是因为在这个Action中,我实际上正在更新另一个模型,但我也想更新我的Vehicle模型,基于其他模型即时更新
我的VehicleID属性有[Key]数据注释集,这可能是原因吗?
一个可能的原因是您没有在模型中标记key属性,因为没有生成数据库.您可以使用数据注释来执行此操作...
public class Vehicle
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int VehicleID { get; set; }
//...
}
Run Code Online (Sandbox Code Playgroud)
...或使用Fluent API:
modelBuilder.Entity<Vehicle>()
.Property(v => v.VehicleID)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)
对于整数键,EF默认情况下假定该列是数据库中的自动生成标识,因此不会将ID的值发送到服务器.如果在DB中未自动生成列,则会出现错误.
| 归档时间: |
|
| 查看次数: |
1432 次 |
| 最近记录: |