Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回并连接到数据库_C#_.net_Yield Return - Fatal编程技术网

C# 返回并连接到数据库

C# 返回并连接到数据库,c#,.net,yield-return,C#,.net,Yield Return,假设您有以下代码: public static IEnumerable<Product> GetAllProducts() { using (AdventureWorksEntities db = new AdventureWorksEntities()) { var products = from product in db.Product select product; foreach

假设您有以下代码:

public static IEnumerable<Product> GetAllProducts()
{
    using (AdventureWorksEntities db = new AdventureWorksEntities())
    {
        var products = from product in db.Product
                       select product;

        foreach (Product product in products)
        {
            yield return product;
        }
    }
}

这是否意味着在foreach(GetAllProducts()中的var p)的所有执行期间,到数据库的连接都将保持打开状态?

请参见此处:这里是的。如果这是一个问题,那么您可以在
GetAllProducts().ToList()
上循环,一次获取所有行,并尽快关闭连接。你需要考虑利弊。
foreach(var p in GetAllProducts())
{ 
    FunctionWhichProcessProductForTenSeconds(p);
    FunctionWhichProcessProductForTwentySeconds(p);
}