在我的数据库中,我有一个带有主键的Vehicle
表。我正在使用创建一个新的 Vehicle
对象
new Vehicle();
并适当更新车辆的属性。
当我尝试做
genesisContext.Vehicles.AddObject(vehicle);
第一次成功更新表并且主键为 0。在随后的所有情况下,我都会收到一条错误消息,指出该键不唯一
Violation of PRIMARY KEY constraint 'VEHICLES_PK'. Cannot insert duplicate key in object 'dbo.Vehicles'.\r\nThe statement has been terminated.
(大概是因为 EF 设置的主键仍然是 0)
我的理解是 EF 会智能地计算出主键,那么为什么会发生这种情况?
最佳答案
你有两个选择:
- 您可以通过将 VehicleID 指定为
INT IDENTITY(1,1)
来让数据库处理主键 - 在这种情况下,SQL Server 将自动分配唯一且单独的编号,并且 EF 将没关系 - 或者您自己处理,例如您必须在您的应用中找到一种方法来提供唯一的车辆 ID 号。
开箱即用的 EF 中没有任何东西可以神奇地为主键分配唯一编号 - 如果您这么认为,那是一个误解。
马克
关于sql-server - Entity Framework 中的新对象 - 主键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1173001/