sql-server - Entity Framework 中的新对象 - 主键问题

标签 sql-server entity-framework

在我的数据库中,我有一个带有主键的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/

相关文章:

sql - 在 SQL 中删除数百万条记录的最佳方法是什么?

sql-server - 仅当 SQL Server 中满足条件时才触发触发器

SQL Server 不会将触发器事务回滚到保存点

sql-server - SQL LIKE 运算符不适用于亚洲语言 (SQL Server 2008)

c# - 您可以在单元测试项目中使用 Visual Studio 数据库项目来为功能测试设置一个空数据库吗?

c# - Entity Framework 中带有 OR 条件的动态查询

c# - 如何在 .NET Core 1.0 中使用 Entity Framework 运行 sql 脚本?

sql-server-2008 - SQL Server 2008 FILESTREAM 进度指示器

c# - 实现存储库模式的删除方法

sql - 在SQL Server中插入多对多表