Kısaca MARS ismi ile anılan bu özellik, SQL Server 2005 (Yukon) üzerinde açılmıs tek bir baglantı üzerinde birden fazla
DataReader nesnesi ile veri erisimine olanak saglar.
Oysa hatırlanacagı gibi ADO .NET in önceki versiyonlarında var olan XxxDataReader isimli sınıflar, bir baglantı üzerinde
çalısan DataReader nesnesini kapatma amacı ile kullanılan Close() isimli metodu içermekteydi. Bu metodun tipik
kullanım nedeni; hem DataReader nesnesini kapatmak hem de DataReader nesnesinin üzerinde çalısmıs oldugu
baglantının baska amaçlar için de kullanılabilmesini saglamaktır. Zira açılan bir DataReader nesnesi, kendisi ile
iliskilendirilen baglantıyı, Close() metodu çagrılana kadar, mesgul edecek sekilde çalısır. Baska bir deyisle, açılan bir
DataReader kapatılana kadar, aynı baglantı üzerinde baska bir DataReader açılamaz. Örnegin asagıdaki kod parçası,
There is already an open DataReader associated with this connection which must be closed first hatasının alınmasına
neden olmaktadır.
<connectionstrings>
<add name=”Connect” connectionstring=”Data Source=.;Initial Catalog=DenemeDB;User ID=sa;Password=123456;MultipleActiveResultSets=true” providername=”System.Data.SqlClient”>
connectionstrings>
Bu özelligin marjinal faydası; özellikle asenkron veri alma islemlerini optimize ediyor olmasıdır. Sözgelimi aynı pencere
üzerindeki bes farklı combo kontrolünün, “aynı anda” veri tabanından alınan bilgilerle doldurulması gerekiyor ise,
MARS özelligi sayesinde bes farklı baglantı açılmaksızın amaca ulasmak mümkün olacaktır. Bu durum özellikle aktif
baglantıların tükettigi sistem kaynaklarının büyüklügü göz önüne alınırsa, MARS kullanımından saglanacak getirinin ne
denli önemli oldugu daha net anlasılabilir.
Uyarı : MARS özelligi sadece SQL Server 2005 (Yukon) ile kullanılabilmektedir !