带有实体框架的WebAPI,代码优先:不能生成插入对象的正确Id

本文关键字:不能 插入 对象 Id 框架 实体 WebAPI 代码 | 更新日期: 2023-09-27 18:11:14

EDIT:更新后的帖子,仍然需要帮助。

问题是为什么不添加具有正确ID的用户?

我正在使用WebAPI,每当我通过Fiddler发出POST请求时,它会添加一个具有错误ID的用户。

我已经实体框架自动生成和增加我的POCO类(用户)的ID,而不是添加ID为1的用户,它现在的行为,如果数据库中已经有用户,只是创建ID为例如16的用户。

我检查了Visual studio Server Explore中的表,在那里我右键单击表并选择显示表数据,没有任何内容。

我已经尝试清理和重建解决方案,并检查表中是否有任何用户,但没有。

这是我在Web中的连接字符串。配置文件:

 <add name="ConnectoDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)'v11.0;Initial Catalog=CONNECTO_f8dc97e46f8b49c2b825439607e89b59;Integrated Security=True;AttachDbFilename=|DataDirectory|'Connecto.mdf" />

我使用Code First方法创建一个新的DB。

我还检查了Microsoft SQL Server 2012, SQL Server管理工作室,在那里我看到一个名为CWS.Models.ConnectoDbContext的DB,所以我假设这是同一个人。然而,我必须承认我遇到过不一致的情况,有时它会有旧表,即使我不再在我的解决方案中使用它们。

在SQL Server管理工作室我已经检查了UserId是一个身份列。在Visual Studio中,我也检查了UserId列,它说,Is Identity: True

我确实在Visual Studio和SQL Server Management Studio中运行了以下DBCC CHECKIDENT ("[User]", NORESEED);

SQL Server Management Studio返回:
Checking identity information: current identity value 'NULL', current column value 'NULL'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Visual Studio返回:

Checking identity information: current identity value '16', current column value 'NULL'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

它们都返回不同的东西,这让我相信它们不是"连接"的,因为它不是相同的DB?

如有任何帮助,不胜感激

两次

/

带有实体框架的WebAPI,代码优先:不能生成插入对象的正确Id

您需要重新播种标识列:

DBCC CHECKIDENT ("[TableName]", NORESEED);

如果在其他实例中有数据在那里,请小心这样做(可能会导致以后重复的键)。