我有以下代碼形狀。看來我誤解了C#方法的返回值。一個「完整的」枚舉器如何被返回爲空的呢?爲什麼我成功讀取的Npgsql數據消失?
class ThingDoer
{
public NpgsqlDataReader DoQuery()
{
NpgsqlCommand c = new NpgsqlCommand(...);
NpgsqlDataReader dataread = c.ExecuteReader();
return dataread; // Debugger confirms that six data are enumerable here.
}
}
...
class OtherThing
{
public void higherLevelFunction()
{
NpgsqlDataReader result = myThingDoer.DoQuery();
result.Read(); // No data! result's enumerable returns nothing!
}
}
調試器如何「確認」這個?你在調試器中調用什麼?一個空的結果仍然有字段,但沒有行。另外,所有這些NpgsqlConnection在哪裏? –
@Jon Hanna我已經消除了所有額外的工作,包括像連接這樣的世俗細節,以支持突出顯示實際問題。通過設置斷點,我能夠檢查返回前後讀取的數據。 –