Pull to refresh

Comments 8

Добрый день.

Это баг хабра. Некоторые символы экранируются при копирвоании на сайт. Попробую добиться его исправления.

Владельцы ресурса считают, что копирование - зло, надо набирать текст на сайте вручную. Если опустить момент, что писать текст на сайте неудобно и не всегда надёжно, то фрагменты кода точно никто никогда не будет набирать на сайте руками.

Ну в ProviderDetector тогда уж надо идти до конца и упростить

case 14 :
case 15 : return GetDataProvider(SqlServerVersion.v2017, provider);
default : return GetDataProvider(SqlServerVersion.v2017, provider);

до

default : return GetDataProvider(SqlServerVersion.v2017, provider);

В текущей ситуации это уместно, но в дальнейшем могут появиться и другие версии, тогда придётся расширить switch

public override ISqlTableSource? GetTableSource(ISqlTableSource table)

Немного дополню. Аннотация ISqlTableSource? подсказывает также, что в проекте включена директива #nullable enable. Поэтому, в рамках вызова GetTableSource из сборки, table не должно иметь значение null; при _update==null условие будет не будет выполнено и исключение не возникнет. Однако, метод публичный и если сам класс также публичный, метод может быть вызван с нулевым аргументом из сборки, где атрибут #nullable не установлен.

Если ожидаемое поведение при таком вызове - возврат null, логично записать:

  if (table == _update?.Table)
    return table;
  ....

что закроет все случаи.

Класс SqlUpdateStatement (в котором объявлен GetTableSource) публичный, так что вызвать вызов с null возможен

Sign up to leave a comment.