Donc, ce que je veux faire, c'est avoir une API qui récupère quelques colonnes d'une grande base de données et les renvoie au format CSV (texte). Le problème se pose si j'essaye de les obtenir d'abord, puis de construire le csv, car la mémoire se remplit rapidement (400 Mo pour 800k lignes). C'est le plus proche que j'ai pu faire fonctionner, mais le format n'est pas vraiment CSV, ce sont des lignes séparées par des guillemets et ce n'est pas une seule chaîne.
public IEnumerable<string> getCSV()
{
var names = typeof(AddressBook).GetProperties()
.Select(property => property.Name)
.ToArray();
yield return string.Join(",", names);
foreach( string name in names)
var query = context.AddressBook.Select(x => string.Join(",", x.Name, x.Surname, x.BirthDate)).AsNoTracking();
foreach (string row in query)
{
yield return row;
}
}
MemoryOutOfBounds
via l'exception MemoryOutOfBounds
.