Большинство приложений, которые я запрограммировал, не используют MultipleActiveResultSets=True
, но я видел, что опция была включена в нескольких из них и в нескольких учебниках.
Этот ТА вопрос сделок с той же топи c, но она очень старая, и я считаю, что за это время многое изменилось.
OP указывает на выполнение некоторых не-запросов при выполнении ExecuteReader
. В этом случае я считаю, что это плохой дизайн, поскольку он может быть заменен некоторой операцией в пакетном стиле, возможно, хранимой процедурой, чтобы минимизировать количество обращений.
При использовании Entity Framework с ASP . NET Ядро и получение исключения, связанного с контекстом данных, выполняющим уже что-то в области, я рассматриваю это как ошибку и не думаю о включении MARS.
Чтение этой статьи MS Docs Я вижу, что следует обратить внимание на различные аспекты, такие как параметры (ANSI_NULLS
, DATE_FORMAT
, LANGUAGE
, TEXTSIZE
), контекст безопасности, текущая база данных, переменные состояния (@@ERROR
, @@ROWCOUNT
, @@FETCH_STATUS
, @@IDENTITY
) при работе с включенным MARS.
Кроме того, 10+ лет означают, что серверы с гораздо большими возможностями могут поддерживать гораздо больше соединений, если это действительно необходимо (кэширование должно помочь уменьшить эту потребность).
Поэтому мне интересно, стоит ли мне когда-нибудь рассматривать включение MARS при работе с современными ASP. NET Основными приложениями (3.0 +).
Вопрос: Когда следует использовать MultipleActiveResultSets = True при работе с ASP. NET Core 3.0 и SQL Server 2019 +?