[英]Single Record vs Bulk Records Insert - Entity Framework
當我嘗試填充上下文對象並一次保存/插入所有記錄時,出現以下錯誤。
{“違反主鍵約束'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();
但是,如果我為每條記錄創建上下文,然后將該記錄插入/保存到db中,則效果很好。 見下文。
foreach (var a in b)
{
..........
var proxy = new AREntities();
proxy.AddtoXYZ(data);
proxy.SaveChanges();
}
但是上面的代碼顯然會影響性能。 我正在嘗試診斷為什么在方案1中出現錯誤。有什么想法嗎?
這是關鍵約束的定義。
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
在第一個示例中,您要多次添加同一實體,並且主鍵值重復,從而導致錯誤。 您執行此操作的第二種方法是正確的。 循環完成后僅調用保存更改,而不會影響性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.