Pull to refresh

Comments 5

5) Судя по blame, выражение с проверкой _options и нормализацией имени это позднее добавление джуном. В оригинале просто бралось databaseModel.DatabaseName

4) Тоже позднее добавление. В оригинале было просто operation.Schema, потом везде заменили на operation.Schema ?? model?.GetDefaultSchema()

В этом случае всё нормально - реализовано обобщение кода путём применения сакрального констракта предтечей find and replace.

Другая теория — возможно, в проверке допущена ошибка, и вместо '&&' нужно использовать '||'.

Нет, тут всё правильно.

В описании оригинального коммита написано, что должна быть либо модель указана, либо колонки заданы. Текст в исключении говорит про то же, хотя и чуть кривовато: "The data insertion operation on '{table}' is not associated with a model. Either add a model to the migration, or specify the column types in all data operations."

3) Явный баг. И там не только max и min. Некоторые round тоже с двумя аргументами и для них отдельная обработка должна быть.

В текущей ветке release/8.0 обсуждаемый код был сначала частично пофиксан, а потом почти полностью переделан с добавлением поддержки кучи новых функций.

2) Точно косяк. В предыдущих версиях кода были ещё такого типа функции, но с нормальным поведением.

1) Практически наверняка баг. В предыдущей версии в if исключение бросалось.

О, интересное исследование) Ну, ничто не идеально, бывают такие вот осечки у разработчиков.

model?.GetDefaultSchema()

Кажется такое имело бы смысл, если бы метод расширения GetDefaultSchema (а это вроде extension метод), принимал бы на вход nullable тип и имел какую то ветку выполнения для случая, когда this равно null.

Тогда было бы логично всё)

Оператор "?." не дал бы выполнить такой метод всё равно. Но если без него, то в теории да, могло быть и так. Но тогда и предупреждения анализатора бы не было, кстати.

Ваша правда, не учёл, как именно работает ?.

Просто возникла идея, что когда то там могло быть model.GetDefaultSchema() с обработкой null внутри, пока не появились NRT :)

Sign up to leave a comment.