Multiple Active Result Sets (MARS) adalah fitur yang diperkenalkan di SQL Server 2005 dan tidak tersedia di sistem database lain seperti postgres sehingga Anda tidak akan dapat mengaktifkannya di string koneksi.
Kesalahan yang Anda hadapi adalah hasil dari mencoba melakukan dua kueri pada satu pembaca data terbuka. Saat menggunakan Entity Framework yaitu biasanya terjadi bila Anda memiliki Lazy Loading dihidupkan dan properti lazy dimuat di pembaca yang sama dengan entitas induk. Misalnya kode yang mirip dengan ini dapat menghasilkan kesalahan ini:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha"));
foreach (var user in users)
{
Console.WriteLine(user.Address.StreetName);
}
Di baris pertama tidak ada data yang diambil karena kami hanya menyiapkan kueri Linq. Saat kita memulai foreach
sebuah DataReader
dibuka dan kumpulan pengguna yang memenuhi ketentuan kami ditanyai tetapi pembaca tidak ditutup. Kemudian di dalam foreach
kami mencapai properti Alamat Pengguna yang malas dimuat. Beban lambat ini menyebabkan eksekusi kueri pada DataReader
terbuka yang sama dan saat itulah pengecualian terjadi. Jika saya ingin menghilangkan kesalahan, saya cukup menambahkan ToList()
(atau apa pun yang menyebabkan kueri tampil) hingga akhir baris seperti ini:
var users = context.Users.Where(u => u.FirstName.StartsWith("Ha")).ToList();
Semoga ini bisa membantu Anda.