Как SqlDataReader определяет, следует ли устанавливать для столбца значение ReadOnly при заполнении DataTable?
Я зову dataTable.Load(sqlDataReader)
и 2 столбца устанавливаются в ReadOnly
в таблице данных автоматически. Остальные столбцы доступны для редактирования. Я знаю, что могу редактировать это свойство, но мне было интересно, как оно определяет, что нужно установить ReadOnly
,
Один из столбцов является первичным ключом таблицы, а другой - Bit
, Bit
столбец имеет ограничение по умолчанию в SQL Server, но это все. Запрос, который я использую для его вызова, - это преобразование столбца в INT
, Мне интересно, есть ли способ, которым я могу отредактировать свой запрос SQL, чтобы сделать столбец только для чтения.
1 ответ
Вы как бы ответили на свой вопрос, указав детали столбца.
Я предполагаю, что DataTable создается таким образом, чтобы иметь возможность обновлять, вставлять, удалять строки / столбцы и т. Д. Поэтому все, что обрабатывается ресурсом, отличным от DataTable или рассчитывается, вероятно, доступно только для чтения.
Таким образом, столбец первичного ключа, скорее всего, является столбцом IDENTITY, означающим, что база данных назначает ключ, то есть вы НЕ хотите добавлять свое собственное значение! И поэтому помечен как только для чтения.
Следующее, вероятно, не потому, что в столбце есть значение по умолчанию. Потому что технически вы не включаете битовый столбец, но вы включаете вычисляемый столбец на основе битового столбца. Таким образом, столбец, который вы включаете, на самом деле не существует в базовой таблице, и поэтому.net не сможет изменить данные в столбце.....