sql >> Databasteknik >  >> RDS >> Sqlserver

Ge avkastningsdatabasposter med LinqToSql?

I fallet med att köra en grundläggande fråga kan det fungera på det sättet (visst är det möjligt) - dock i fallet med att fråga efter en naken Table<T> , det kanske vara att allt buffrar först; du kan kanske prova att fråga räkningen under iterationen, eller köra en spårning. I det här fallet misstänker jag den buffrar först.

Re closed:det beror också på;p Om någon använder foreach , sedan ja:eftersom foreach disponerar uttryckligen iteratorn via finally . I alla fall! Det är inte garanterat om någon gör det till exempel (väldigt stygg och slapp):

var iter = yourData.GetEnumerator();
if(iter.MoveNext()) {
    Console.WriteLine(iter.Current.Name); // first record of, say, 20
}
// and don't dispose the iterator == bad

eftersom iteratorn inte a:slängs, b:avgaser sig själv och c:inte kraschar, kommer den inte att stängas av ordentligt (något av dessa tre tillstånd kommer stäng den ordentligt). Betoning:detta är ett patologiskt fall:normalt är det rimligt säkert att säga "det kommer att stänga, ja".

Om du vill ha garanterad icke-buffring, notera att "dapper" har det, om du ställer in buffered till false :

IEnumerable<Customer> customers = connection.Query<Customer>(
       "select * from Customer", buffered: false);

(den kan också hantera parametrarna etc.)



  1. Varför uppdaterades inte frågan efter att ha klickat på uppdateringsknappen?

  2. Hur Sind() fungerar i PostgreSQL

  3. använda ID:n som returneras från infoga i, för postinsättning med främmande nyckel

  4. db2 motsvarighet till MySql REPLACE INTO