我的 Entity 框架存储库中的这个简单函数让我很头疼。我已经做了一百万次类似的事情,但是这个只是一直给我一个WIN32Exception 等待操作超时
个人 (1 - *) 礼物
不知何故,我希望我不能将礼物从 Individu 迁移到另一个,因为我正在循环遍历我正在更改的同一组。
我检查了 sys.dm_tran_locks 并且这没有显示 sql 中任一表上的任何正在运行的锁。
public void MigrateDataForInd(Individu from, Individu to){
foreach (var item in from.Gifts.ToList()) {
to.Gifts.Add(item);
//also tried: item.Individu = to;
}
this.SaveChanges();
}
关于如何规避这个问题的任何想法?(增加锁定超时时间没有帮助,我在使用其他导航属性时遇到同样的错误(礼物只是其中之一)
更新: 为了让你们了解我在这里处理的数据量:
有 +- 500.000 INdividus,总共有 +- 1000 万份礼物。每个人有 0 到 100 份礼物
您是否认为这个原因足以将此代码从 EF 中移出并在更新查询中运行迁移?(从上面的数据你可以看到我在一个事务中只更新了 100 行,这已经给了我超时)