带有实体框架的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);
。
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?
如有任何帮助,不胜感激
两次/
您需要重新播种标识列:
DBCC CHECKIDENT ("[TableName]", NORESEED);
如果在其他实例中有数据在那里,请小心这样做(可能会导致以后重复的键)。