【发布时间】:2014-01-22 09:18:51
【问题描述】:
当我尝试填充上下文对象并一次保存/插入所有记录时,出现以下错误。
{"违反 PRIMARY KEY 约束 'PK_T8_2D83E3D3'。无法在对象 'dbo.T8' 中插入重复键。重复键值为 (AWLS0757043072)。\r\n语句有已终止。"}
var proxy = new AREntities();
foreach (var a in b)
{
..........
proxy.AddtoXYZ(data); //Please note 'data' inside foreach loop is different at all times. I am not adding same record multiple times.
}
proxy.SaveChanges();
但是,如果我为每条记录创建上下文,然后将该记录插入/保存到数据库中,它就可以正常工作。见下文。
foreach (var a in b)
{
..........
var proxy = new AREntities();
proxy.AddtoXYZ(data);
proxy.SaveChanges();
}
但是上面的代码显然搞砸了性能。我正在尝试诊断为什么在场景 1 中出现错误。有什么想法吗?
这里是key约束的定义。
ALTER TABLE [dbo].[T8] ADD PRIMARY KEY CLUSTERED
(
[C1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
GO
【问题讨论】:
-
我看到 proxy.AddtoXYZ(data); ,检查数据对象 C1 属性值在 foreach 循环中是否重复
-
这是我检查的第一件事,C1 始终不同。
-
您是否尝试过重建 EntityFrameWork 数据模型?
-
也这样做了。没有成功。
标签: c# sql sql-server entity-framework