Multiple Active Result Sets (MARS) è una funzionalità introdotta in SQL Server 2005 e non è disponibile in altri sistemi di database come Postgres, quindi non potrai attivarla nella stringa di connessione.
L'errore che stai affrontando è il risultato del tentativo di eseguire due query su un lettore di dati aperto. Quando si utilizza Entity Framework, questo solitamente succede quando hai Caricamento lento attivato e le proprietà pigre vengono caricate nello stesso lettore delle entità padre. Ad esempio un codice simile a questo potrebbe produrre questo errore:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha"));
foreach (var user in users)
{
Console.WriteLine(user.Address.StreetName);
}
Nella prima riga non vengono recuperati dati poiché abbiamo solo preparato una query Linq. Quando iniziamo il foreach
un DataReader
viene aperto e viene interrogata la raccolta di utenti che soddisfano le nostre condizioni ma il lettore non viene chiuso. Poi dentro foreach
raggiungiamo la proprietà Address di User che è caricata in modo pigro. Questo carico lento provoca l'esecuzione di una query sullo stesso DataReader
aperto ed è allora che si verifica l'eccezione. Se volessi eliminare l'errore, potrei semplicemente aggiungere un ToList()
(o qualsiasi cosa che causi l'esecuzione della query) alla fine della riga in questo modo:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha")).ToList();
Spero che questo ti aiuterà.