Múltiplos Conjuntos de Resultados Ativos (MARS) é um recurso introduzido no SQL Server 2005 e não está disponível em outros sistemas de banco de dados como postgres, portanto, você não poderá ativá-lo na cadeia de conexão.
O erro que você está enfrentando é resultado da tentativa de realizar duas consultas em um leitor de dados aberto. Ao usar, por exemplo, o Entity Framework, geralmente acontece quando você tem Carregamento lento ativado e as propriedades lentas são carregadas no mesmo leitor que as entidades pai. Por exemplo, um código semelhante a este pode produzir este erro:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha"));
foreach (var user in users)
{
Console.WriteLine(user.Address.StreetName);
}
Na 1ª linha, nenhum dado é buscado, pois apenas preparamos uma consulta Linq. Quando iniciamos o
foreach
um DataReader
é aberto e a coleção de usuários que atende às nossas condições é consultada, mas o leitor não é fechado. Em seguida, dentro de foreach
chegamos à propriedade Address de User que é carregada com preguiça. Esse carregamento lento causa uma execução de consulta no mesmo DataReader
aberto e é aí que ocorre a exceção. Se eu quisesse me livrar do erro, poderia simplesmente adicionar um ToList()
(ou qualquer coisa que faça com que a consulta seja executada) até o final da linha assim:var users = context.Users.Where(u => u.FirstName.StartsWith("Ha")).ToList();
Espero que isso irá ajudá-lo.