gpt4 book ai didi

.NET Entity Framework : "An error occurred while starting a transaction on the provider connection. See the inner exception for details"

转载 作者:行者123 更新时间:2023-12-02 19:43:22 28 4
gpt4 key购买 nike

在 .NET 中使用 Entity Framework 我想循环访问从数据库返回的项目列表并进行更新。

var qry = (from c in DBEntities.Customer select c);
foreach (Object item in qry)
{
item.FirstName = ....
... etc, other code here
DBEntities.SaveChanges();
}

根据:http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/8a337036-d288-48d4-80d4-89e5a51eddd9?ppud=4 S Hargroves 建议转换为 IList,这就是解决方案。

还没有尝试过,我确信它会起作用,但即使它起作用,我想知道为什么我无法在循环期间更新该项目?这是在我的本地开发环境中发生的,没有其他用户访问数据库。

谢谢...

最佳答案

当您在查询上使用 SaveChanges 更新数据库时,该查询将失效。结果集可能已因您执行的更新而更改。

通过使用ToList,您可以触发查询的执行并将数据库中的所有结果放入内存中。您的内存列表现在是具体的,不再关心是否是查询。

因为对象查询使用 IEnumerable,所以不能在 foreach 中执行修改列表的操作。

我也相信此代码会因相同的基本原因而失败:

List<int> numbers = new List<int>() { 1,2,3,4,5,6};
foreach(var num in numbers)
numbers.Remove(num); //Invalidates the Enumerator being used in the foreach

关于.NET Entity Framework : "An error occurred while starting a transaction on the provider connection. See the inner exception for details",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285420/

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