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);
}