sql-server – 实体框架中的新对象 – 主键问题

在我的数据库中,我有一个带有主键的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 – 实体框架中的新对象 – 主键问题 - 代码日志