gpt4 book ai didi

c# - 通过 LINQ 插入数据时出现重复键错误但找不到具有相同值的条目

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:15 25 4
gpt4 key购买 nike

我正在使用 C# Linq 与 MSSQL 数据库进行交互。我有一个问题,有时会收到错误消息:

"Violation of PRIMARY KEY constraint 'PK_clustered_key_name'. Cannot insert duplicate key in object 'dbo.table_name'. The statement has been terminated."

当我尝试向数据库中添加信息时。发生错误时,我在 MSSQL Management Studio 中使用我尝试添加的值执行 sql 查询,但表中似乎没有条目。

所以我的问题是,是否有人知道此处可能存在的问题。下面是一些附加信息。

我运行的代码(错误发生在SaveChanges)如下:

table_name table_name_instance = new table_name();
...
fill in values of fps
...

context.table_name.AddObject(fps);

context.SaveChanges();

我还添加了检查 col1、col2、col3、col3 的值是否已存在于数据库中,因此我绝对不会添加重复的条目。由于我不确定添加是否被延迟并且检查返回重复条目已经存在我已经将添加的值存储在本地容器中,只是为了确定,但是在调用 SaveChanges() 时我仍然收到错误。

我的表的定义与报告错误的聚簇键如下。 Col1 到 col4 都是 Guid:s,它们是其他表的外键。

CREATE TABLE [dbo].[table_name](
[col1] [uniqueidentifier] NOT NULL,
[col2] [uniqueidentifier] NOT NULL,
[col3] [uniqueidentifier] NOT NULL,
[col4] [uniqueidentifier] NOT NULL
CONSTRAINT [PK_forbandsscenariokrav] PRIMARY KEY CLUSTERED
(
[col1] ASC,
[col2] ASC,
[col3] ASC,
[col4] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我见过很多类似的问题,但没有找到似乎适用于我的情况的答案。

其他信息,我在 Win 7 64 位下使用 MSSQL server 2008 R2 以及:

  • Microsoft SQL Server Management Studio 10.50.1600.1
  • Microsoft 数据访问组件 (MDAC) 6.1.7601.17514
  • 微软 MSXML 3.0 5.0 6.0
  • Microsoft Internet Explorer 8.0.7601.17514
  • 微软 .NET 框架 2.0.50727.5448
  • 操作系统 6.1.7601

已更新
当我改为像这样使用 Create 函数时:

table_name table_name_instance = Createtable_name(col_val, col2_val,...);
context.table_name.AddObject(fps);
context.SaveChanges();

它似乎工作得很好。这是否给出了任何提示,说明为什么我的第一个 new 解决方案没有工作,即使我填写了每一列值,不接受 null 值?

最佳答案

查看此 SQL 语句是否适用于您的 SQL Server

INSERT INTO [dbo].[table_name]
([col1]
,[col2]
,[col3]
,[col4])
VALUES
(NEWID(),
NEWID(),
NEWID(),
NEWID())
GO

如果是,则表示您从应用创建的 Guid 正在复制。在向数据库中插入数据之前,检查表中是否存在要插入的主键。您必须为每一列执行此操作,因为每一列都是 PK。

关于c# - 通过 LINQ 插入数据时出现重复键错误但找不到具有相同值的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com