Трассировка стека показывает, что ExecuteReader является базовым методом для ExecuteScalar. Во время копания для связанной команды behaviour я обнаружил пост ниже - заявив, что команда behaviour.default используется читателем.
Имеет ли ExecuteScalar () какие-либо преимущества по сравнению с ExecuteReader ()?
Мне известно, что соединение всегда можно закрыть и удалить явным образом с помощью datareader.close (), datareader.dispose () - при условии, используется ExecuteReader (commandbehaviour.Closeconnection). ExecuteReader (CommandBehaviour.Default), с другой стороны, сохраняет базовое соединение открытым, даже когда объект чтения данных закрыт и / или удален. Поэтому мой вопрос: если executetescalar использует поведение по умолчанию, как я могу убедиться, что основное соединение закрыто после получения скалярного значения?