sql >> Database >  >> RDS >> Sqlserver

Retourneer databaserecords met LinqToSql?

In het geval van het uitvoeren van een basisquery, kan werk op die manier (het is zeker mogelijk) - echter in het geval van het opvragen van een naakte Table<T> , het misschien of het nu allemaal eerst buffert; u kunt misschien proberen de telling tijdens de iteratie op te vragen of een tracering uit te voeren. In dit geval vermoed ik het zal eerst bufferen.

Re gesloten:dat hangt er ook van af;p Of iemand foreach gebruikt , dan ja:sinds foreach verwijdert expliciet de iterator via finally . Echter! Het is niet gegarandeerd als iemand bijvoorbeeld (heel ondeugend en laks):

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

aangezien de iterator niet a:verwijderd wordt, b:zichzelf uitput, en c:niet crasht, zal het niet goed afsluiten (elk van die 3 voorwaarden zal sluit het goed). Nadruk:dit is een pathologisch geval:normaal gesproken is het redelijk veilig om te zeggen "het zal sluiten, ja".

Als u gegarandeerd niet-bufferen wilt, houd er dan rekening mee dat "dapper" dat heeft, als u buffered instelt naar false :

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

(het kan ook de parameters enz. aan)



  1. Datum ophalen uit een resultSet

  2. Hoe voeg ik een positieve integer-beperking toe aan een integer-kolom in MySQL?

  3. SQL:maak een volledig record van 2 tabellen

  4. Onjuist geheel getal (2147483647) is ingevoegd in MySQL?