Czy dobrą praktyką jest posiadanie jednego współdzielonego obiektu SqlConnection w aplikacji .NET do używania we wszystkich połączeniach z bazą danych lub czy powinien on mieć osobny przy każdym dostępie do bazy danych?Shared SqlConnection
Obecnie mam jedną wspólną i wydaje się, że pojawiają się nagle problemy. Wygląda na to, że nie mogę użyć współdzielonego, gdy potrzebuję użyć trybu uwierzytelniania SQL zamiast trybu uwierzytelniania systemu Windows. Po raz pierwszy próbowałem użyć uwierzytelniania SQL i otrzymałem ten błąd, gdy próbowałem użyć tego samego połączenia po raz drugi:
Istnieje już otwarty obiekt DataReader powiązany z tym rozkazem, który musi zostać zamknięty jako pierwszy.
Jeśli mówisz "nie korzystaj z MARS" - czy masz jakieś konkretne powody? Z ciekawości ... –
http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx omawia niektóre z negatywów używania MARS – RichardOD
Model izolacji transakcji MARS jest niekompletny, jak w nie do końca zdefiniowane teoretycznie. W rezultacie serwer może zostać "zdezorientowany", jak podaje link zamieszczony przez Richarda. Zwykle oznacza to, że liczba możliwych interakcji jest zbyt duża i nie wszystkie ścieżki kodu na serwerze są testowane i sprawdzane. –