etrafında googling sırasında birkaç yerde bulunan verim anahtar kelime kullanarak bir veritabanından veri almak için bir örnek kod: Verileri bir veri okuyucusu üzerinden yinelemek, bağlantıyı kapatmayabilir mi?
public IEnumerable<object> ExecuteSelect(string commandText)
{
using (IDbConnection connection = CreateConnection())
{
using (IDbCommand cmd = CreateCommand(commandText, connection))
{
connection.Open();
using (IDbDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
yield return reader["SomeField"];
}
}
connection.Close();
}
}
}
Bu örnek kodda olduğunu düşünmekte haklı mıyım, bağlantı olmaz Tüm veri okuyucu üzerinde yineleme yapmazsak kapatılmalı mıyım? İşte
bir I doğru verim anlarsanız, bağlantıyı kapatmak olmaz örnek .. felaket olmayabilir bir db bağlantısı için
foreach(object obj in ExecuteSelect(commandText))
{
break;
}
, ben GC sonunda bunu temizlemek herhalde, ama Ya bir bağlantı yerine daha kritik bir kaynak mıydı?