尝试遍历Queryable时出错

本文关键字:出错 Queryable 遍历 | 更新日期: 2023-09-27 18:09:59

foreach(var name in _cust.Select(s => s.Username).Distinct())
{
    var x = _cust.Select(s => s.Username == name); //ERROR HERE
    //rest of the code here
}

将抛出There is already an open DataReader associated with this Command which must be closed first.异常,但是当我添加.ToList()时它不会发生。

到目前为止,我已经到处找了,但还没有找到一个满意的答案。所以我的问题是:
  1. 除了添加.ToList()之外还有其他方法吗?
  2. 如果我使用.ToList()作为解决方案,这会导致性能问题,当它进入生产?因为ToList()会尝试加载内存中的所有内容。
  3. 我有很多导航属性在我的实体,将ToList()试图加载导航属性内的一切?

谢谢

尝试遍历Queryable时出错

除了添加。tolist()之外,还有其他方法吗?

我想在您的连接字符串中启用MARS可能是ToList()的替代方案。

如果我使用。tolist()作为解决方案,当它进入生产时,这会导致性能问题吗?

这取决于数据库中不同用户名的数量

因为AFAIK ToList()将尝试加载内存中的所有内容。

它将尝试加载内存中所有不同的UserNames

我有很多导航属性在我的实体,将ToList()试图加载导航属性内的一切?

不,它将执行适当的查询并在UserName列上进行投影。

恕我直言,在调试模式下监视生成的查询是很好的做法