我正在使用控制台应用程序编写一个相当复杂的数据库扫描实用程序,但由于某种原因,当我尝试对包含数据的数据库表执行简单的 LINQ SELECT 时,我遇到了最基本的问题。
当数据库表没有数据时,查询会将控制权返回给控制台应用程序。
当表有数据时,SQL 服务器显示"挂起"和"ASYNC_NETWORK_IO"。
提前感谢您的任何帮助。
程序.cs如下所示:
class Program
{
static void Main(string[] args)
{
DataModels dm = new DataModels();
List<string> lsReturn = dm.ReturnDataFromTableX();
}
}
数据模型.cs如下所示:
class DataModels
{
public List<string> ReturnDataFromTableX()
{
return _DataEntities.<TABLE_NAME>.Select(x => x.<COLUMN_NAME>).ToList();
}
}
首先你可以试试
class DataModels
{
public IEnumerable<string> ReturnDataFromTableX()
{
return _DataEntities.<TABLE_NAME>.Select(x => x.<COLUMN_NAME>);
}
}
它将跟踪表中返回的行,如果您的处理时间不是很长,那么它应该已经足够了 或者,在这种情况下,每次真正需要时,将打开连接以读取部分数据:
var page = 0;
var step = 10;
var block = _DataEntities.<TABLE_NAME>.Skip(page * step).Take(step).Select(x => x.<COLUMN_NAME>).ToList();
while (block.Count > 0)
{
foreach (var item in block)
{
yield return item;
}
page++;
block = _DataEntities.<TABLE_NAME>.Skip(page * step).Take(step).Select(x => x.<COLUMN_NAME>).ToList();
}