在我的数据库中,我有一个带有主键的Vehicle
表。我正在使用
Vehicle
对象
new Vehicle();
并适当更新车辆的属性。
当我尝试做
时genesisContext.Vehicles.AddObject(vehicle);
第一次成功更新表并且主键为0.在以后的所有情况下,我都会收到错误消息,指出密钥不是唯一的
违反PRIMARY KEY约束'VEHICLES_PK'。无法插入 对象'dbo.Vehicles'中的重复键。\ r \ n声明已经存在 终止。
(大概是因为EF设置的主键仍为0 )
我理解EF会智能地计算出主键,为什么会发生这种情况?
答案 0 :(得分:9)
您有两种选择:
INT IDENTITY(1,1)
- 在这种情况下,SQL Server将自动分配唯一的和单独的数字,并且EF可以正常使用马克
答案 1 :(得分:1)
您可以在SavingChanges
ObjectContext
事件中指定新ID
objectContext.SavingChanges += new EventHandler(objectContext_SavingChanges);